PageSourceSearch

https://app.nempos.dk/js/257.8c4c56d6.js

js nempos.dk collected 2026-10-08 03:41:48 UTC 78,672 bytes, 2 lines download raw bytes

1"use strict";(self["webpackChunkwsypos_frontend"]=self["webpackChunkwsypos_frontend"]||[]).push([[257],{49793:function(t,e,r){r.d(e,{A:function(){return l}});var n=function(){var t=this,e=t._self._c;return e("button",{class:["btn spinner-button "+t.extraButtonClasses,void 0===t.bsColour?"btn-primary":"btn-"+t.bsColour,{"btn-sm":t.small},{"btn-lg":t.large}],attrs:{type:t.submitFunc?"submit":"button",disabled:t.disabledCondition?t.disabledCondition:t.spinnerCondition||t.extraDisabledCondition},on:{click:function(e){return t.$emit("buttonClicked")}}},[t.bsIcon?e("i",{staticClass:"bi",class:"bi-"+t.bsIcon}):t.buttonText?e("span",{domProps:{innerHTML:t._s(t.buttonText)}}):t._e(),t.addKeyIcon?e("wsy-key",{staticClass:"ms-1",attrs:{iconColour:t.bsColour&&"danger"===t.bsColour?"light":"danger"}}):t._e(),t.spinnerCondition?e("div",{staticClass:"button-overlay"},[e("span",{staticClass:"spinner-border spinner-border-sm",attrs:{role:"status","aria-hidden":"true"}})]):t._e()],1)},i=[],a={name:"AdminSpinnerButton",props:{buttonText:{type:String},bsIcon:{type:String},bsColour:{type:String,required:!1,default:"primary"},submitFunc:{type:Boolean,default:!0},spinnerCondition:{required:!0},disabledCondition:{required:!1},extraDisabledCondition:{required:!1,default:!1},small:{type:Boolean,default:!1},large:{type:Boolean,default:!1},extraButtonClasses:{type:String,required:!1,default:""},addKeyIcon:{default:!1}}},s=a,o=r(81656),u=(0,o.A)(s,n,i,!1,null,"0a026447",null),l=u.exports},10257:function(t,e,r){r.r(e),r.d(e,{default:function(){return m}});var n=function(){var t=this,e=t._self._c;return e("div",{staticClass:"p-4"},[e("h1",[t._v(t._s(t.$t("admin.z_reports.transfers.transfers")))]),t.zReportData?e("router-link",{staticClass:"float-end ms-3 mt-1",attrs:{to:{name:"ZReport",params:{uuid:t.zReportData.uuid}},title:t.$t("pos.information")}},[e("button",{staticClass:"btn btn-sm btn-primary",attrs:{type:"button"}},[t._v(" "+t._s(t.$t("types."+(t.zReportData.closed?"z":"x")+"_report"))+" ")])]):t._e(),t.transfersLoaded?e("div",t._l(t.integrationTransfers,(function(r){return e("div",{key:r.integration.uuid},[e("h2",[t._v(" "+t._s(r.integration.name)+" "),e("span",{staticClass:"small text-muted"},[t._v(t._s(r.integration.external_system?r.integration.external_system.formatted_name:"N/A"))]),e("i",{staticClass:"bi bi-key-fill"})]),e("table",{staticClass:"table table-striped"},[e("thead",[e("tr",[e("th",[t._v(t._s(t.$t("admin.z_reports.transfers.begun")))]),e("th",{staticClass:"actions"},[t._v(t._s(t.$t("general.success")))]),t.integrationHasSystemWithName(r.integration,"economic")?e("th",{staticClass:"actions"},[t._v(" "+t._s(t.$t("admin.z_reports.transfers.pdf_success"))+" ")]):t._e(),e("th",[t._v(t._s(t.$t("general.error_messages")))])])]),e("tbody",t._l(r.transfers,(function(n){return e("tr",{key:n.uuid},[e("td",[t._v(t._s(t.formatDateTime(n.created_at)))]),e("td",{staticClass:"actions"},[n.success?e("i",{staticClass:"bi bi-check-square fs-5"}):t._e()]),t.integrationHasSystemWithName(r.integration,"economic")?e("td",{staticClass:"actions"},[n.data.pdf_success?e("i",{staticClass:"bi bi-check-square fs-5"}):t._e()]):t._e(),e("td",{domProps:{innerHTML:t._s(n.data&&n.data.errors&&n.data.errors?Object.entries(n.data.errors).join("<br>"):"")}})])})),0)])])})),0):e("div",[e("span",{staticClass:"spinner-border",attrs:{role:"status","aria-hidden":"true"}})])],1)},i=[],a=r(49793),s=r(98956),o={components:{AdminSpinnerButton:a.A},name:"ZReportTransfers",mixins:[s.A],props:["zReport"],data(){return{zReportData:!1,integrationTransfers:[],transfersLoaded:!1,retryingZReportTransfer:!1}},methods:{async getZReport(){let t=await this.wsyAPI.get("z-reports/"+this.$route.params.uuid);this.wsyAPI.validateResponse(t)&&(this.zReportData=t.z_report)},async getTransfers(){this.transfersLoaded=!1;let t=await this.wsyAPI.get("z-reports/"+this.$route.params.uuid+"/transfers");
1this.wsyAPI.validateResponse(t)&&(this.integrationTransfers=t.integration_transfers),this.transfersLoaded=!0},async retryZReportTransfer(t){this.retryingZReportTransfer=!0;const e={register_uuid:this.$route.query.register_uuid};let r=await this.wsyAPI.post("e-conomic-integrations/"+t+"/restart",e);this.wsyAPI.validateResponse(r)?this.$store.commit("successNotify","Successfully started process to retry any incomplete transfers."):this.$store.commit("dangerNotify","Server returned an error: "+r.message),this.retryingZReportTransfer=!1},integrationHasSystemWithName(t,e){return t.external_system&&t.external_system.name===e}},created(){this.getZReport(),this.getTransfers()},mounted(){}},u=o,l=r(81656),c=(0,l.A)(u,n,i,!1,null,"79c53ee7",null),m=c.exports},98956:function(t,e,r){var n=r(3235);e.A={computed:{locale:function(){return this.getLocale()}},methods:{resolveFormatterContext(){let t=this;while(t){if(t.formatterContext&&"object"===typeof t.formatterContext)return t.formatterContext;t=t.$parent}return{}},getLocale(){const t=this.resolveFormatterContext();return t.locale??this.$store?.getters?.company?.locale??"da-DK"},getTimezone(){const t=this.resolveFormatterContext();return t.timezone??this.$store?.getters?.company?.timezone??"Europe/Copenhagen"},formatDateTimeFromDate(t,e=!1){let r={year:"numeric",month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZone:this.getTimezone()};return e&&(r.weekday=e),t.toLocaleDateString(this.locale,r)},formatDateTime(t,e=!1){let r=new Date(t),n=!1!==e&&new Date(e);if(!1!==n&&n instanceof Date&&r.getDate()===n.getDate()){let t={hour:"2-digit",minute:"2-digit",second:"2-digit",timeZone:this.getTimezone()};return r.toLocaleTimeString(this.locale,t)}let i={year:"numeric",month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZone:this.getTimezone()};return r.toLocaleDateString(this.locale,i)},formatDateTimeWithoutSeconds(t){let e=new Date(t),r={year:"numeric",month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",timeZone:this.getTimezone()};return e.toLocaleDateString(this.locale,r)},formatDateTimeWithYear(t){let e=new Date(t);return e.getDate()+"/"+(e.getMonth()+1)+"-"+e.getFullYear()+" kl. "+e.getHours()+":"+String(e.getMinutes()).padStart(2,"0")},formatLessPreciseDateTime(t){const e=this.toCompanyTime(t);return e.getDate()+"/"+(e.getMonth()+1)+" kl. "+e.getHours()+":"+String(e.getMinutes()).padStart(2,"0")},formatDate(t,e=null){let r={year:"numeric",month:"numeric",day:"numeric",timeZone:this.getTimezone()};return null!==e&&(r=Object.assign(r,e)),t instanceof Date||(t=new Date(t)),t.toLocaleDateString(this.locale,r)},formatDateFullLength(t,e=null){let r={year:"numeric",month:"2-digit",day:"2-digit",timeZone:this.getTimezone()};return null!==e&&(r=Object.assign(r,e)),t instanceof Date||(t=new Date(t)),t.toLocaleDateString(this.locale,r)},formatBookingDate(t){const e=this.toCompanyTime(t),r=e.getDate(),n=e.getMonth()+1,i=e.getFullYear();return`${r}/${n}-${i}`},formatTime(t,e=!1){if(!t)return"";"object"!==typeof t&&(t=new Date(t));let r={hour:"2-digit",minute:"2-digit",timeZone:this.getTimezone()};return e&&(r.second="2-digit"),t.toLocaleTimeString(this.locale,r)},formatTimeKitchen(t){if(!t)return"";"object"!==typeof t&&(t=new Date(t));const e={hour:"2-digit",minute:"2-digit",weekday:"short",timeZone:this.getTimezone()};return t.toLocaleTimeString(this.locale,e)},getCurrency(){const t=this.resolveFormatterContext();return t.currency??this.$store?.getters?.company?.currency??"DKK"},formatPrice(t,e="code",r=!1,n=2){let i=r&&t>0?"+":"",a={minimumFractionDigits:n,maximumFractionDigits:2};if(!1!==e){let t=this.getCurrency();a.style="currency",a.currency=t,a.currencyDisplay=e}let s=t/100;return Math.abs(s)<.005&&(s=0),i+s.toLocaleString(this.locale,a)},capitaliseFirstLetter(t){return t.charAt(0).toUpperCase()+t.slice(1)},unitAbbrv(t,e=!1){const r={gram:"g",kilogram:"kg",centimeter:"cm",meter:"m",centiliter:"cl",liter:"l",minute:"m",hour:"h",decagram:"dg",null:"pcs"};if(t in r){let n=r[t];return"pcs"===n&&e?this.$t("pos.unit_abbreviations.pcs"):n}return t},capitaliseAndCommaSeparateWeekdays(t,e=0){if(e>0&&t.length<7&&t.length>=7-e){let e=["monday","tuesday","wednesday","thursday","friday","saturday","
1sunday"].filter((e=>!t.includes(e)));return this.$t("general.all_days_except")+" "+e.map((t=>this.$t("general.weekdays_correct_capitalisation."+t)))}return t.map(((t,e)=>this.$t("general.weekdays"+(e>0?"_correct_capitalisation":"")+"."+t))).join(", ")},resourceEditCreateHeader(t,e,r=null,n=!1){let i=this.$t("general."+(!1===t?"create":"edit"))+" "+this.$t("types."+e).toLowerCase();if(!1!==t&&null!==r){let t;t=n?" "+r:" <em>"+r+"</em>",i+=t}return i},resourceEditCreateSubmitText(t,e){const r=this.$te("types."+e)?" "+this.$t("types."+e).toLowerCase():"";return this.$t("general."+(!1===t?"create":"update"))+r},resourceDeleteText(t){const e=this.$te("types."+t)?" "+this.$t("types."+t).toLowerCase():"";return this.$t("general.delete")+e},getAllResourceNameText(t){return this.$t("general.all_resource_name",{resourceName:t})},pendingInvitationStatus(t){return null!==t.accepted_at?this.$t("pos.invitation_statuses.accepted"):null!==t.rejected_at?this.$t("pos.invitation_statuses.rejected"):!0===t.expired?this.$t("pos.invitation_statuses.expired"):this.$t("pos.invitation_statuses.open")},formatQuantity(t,e){return e&&"decagram"===e.name?(t/100).toLocaleString(this.locale)+this.getUnitSuffix("kilogram"):t+this.getUnitSuffix(null!==e?e.name:null)},formatQuantityOfOrderLine(t,e="quantity"){let r=null;return t?.sellable?.unit&&(r=t.sellable.unit),this.formatQuantity(t[e],r)},getUnitSuffix(t){return null===t?"":" "+this.unitAbbrv(t)},orderLineOriginalTotal(t,e=!1,r="quantity"){let n=t.price*t[r];return e?this.formatPrice(n,!1):n},orderLineCurrentTotal(t,e=!1,r="quantity"){let n=t.price*t[r];const i=t.line_discount?.percentage;return null!=i&&i>0&&(n-=Math.round(n*(i/1e3))),e?this.formatPrice(n,!1):n},noType(t){return this.$t("general.no_type",{type:this.$t("types."+t).toLowerCase()})},getNameOfWeekdayFromInteger(t,e=!0){const r=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];let n=r[t];return e&&(n=n.toLowerCase()),n},formatProductForDropdown(t){return(null!==t.plu?t.plu+" | ":"")+t.name+" | "+(null===t.price?this.$t("admin.products.cashier_decided_price"):this.formatPrice(t.price))},addLinkSymbolIfShared(t,e){return t+("enterprise"===e.company.type?.name?" 🔗":"")},formatCashierFullName(t){return t.first_name+" "+t.last_name},formatPercentage(t,e,r=!1,n=0,i=1){const a=t/e;return this.formatDecimalAsPercentage(a,r,n,i)},formatDecimalAsPercentage(t,e=!1,r=0,n=1){let i={style:"percent",minimumFractionDigits:r,maximumFractionDigits:n};e&&(i.signDisplay="always");let a=new Intl.NumberFormat(this.locale,i);return a.format(t)},formatVatPercent(t,e=0,r=2){const n=Number(t);if(!Number.isFinite(n))return"";const i=n/100;return this.formatDecimalAsPercentage(i,!1,e,r)},formatPercentageDiscount(t,e=0,r=1){if(null==t)return"";const n=Number(t);return Number.isFinite(n)?this.formatDecimalAsPercentage(n/1e3,!1,e,r):""},getCustomerTypeIconClass(t){switch(t){case"business":return"bi-buildings";case"private":return"bi-person";case"public":return"bi-bank";case"employee":return"bi-file-person"}},getCompanyNameTranslationFromType(t){switch(t){case"business":return this.$t("addresses.company_name");case"public":return this.$t("admin.customers.authority_slash_organisation");case"employee":return this.$t("admin.customers.type.employee");case"private":case null:case void 0:return this.$t("admin.customers.company_slash_organisation")}},formatAccount(t){return`${t.account_number} ${t.name}`},getPriceProfileIdentifier(t){return t?null===t.name?this.$t("general.default"):t.name:this.$t("admin.products.no_availability")},getCompanyName(t,e=!1,r=!1){let n=t.display_name??t.vat_entity?.name;return e&&(t.admin_panel_identifier&&(n=`[${t.admin_panel_identifier}] ${n}`),n=`${t.id}: ${n}`),r&&(n=`${n} (${this.$t("superadmin.companies.types."+t.type.name)})`),n},getGiftCardTypeBehaviourIcon(t){return"value-based"===t.behaviour?"bi-cash":"bi-cup-straw"},toCompanyTime(t){return(0,n.L_)(new Date(t),this.getTimezone())},getAmountFormatter(t=!0,e="code"){return r=>this.formatPrice(r,e,!1,t?2:0)}}}}}]);
2//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMjU3LjhjNGM1NmQ2LmpzIiwibWFwcGluZ3MiOiI4SkFBQSxJQUFJQSxFQUFTLFdBQWtCLElBQUlDLEVBQUlDLEtBQUtDLEVBQUdGLEVBQUlHLE1BQU1ELEdBQUcsT0FBT0EsRUFBRyxTQUFTLENBQUNFLE1BQU0sQ0FDOUUsc0JBQTZCSixFQUFJSyx3QkFDaEJDLElBQWpCTixFQUFJTyxTQUF5QixjQUFnQixPQUFTUCxFQUFJTyxTQUMxRCxDQUFFLFNBQVVQLEVBQUlRLE9BQ2hCLENBQUUsU0FBVVIsRUFBSVMsUUFDbEJDLE1BQU0sQ0FBQyxLQUFPVixFQUFJVyxXQUFhLFNBQVcsU0FBUyxTQUFXWCxFQUFJWSxrQkFBb0JaLEVBQUlZLGtCQUFvQlosRUFBSWEsa0JBQW9CYixFQUFJYyx3QkFBd0JDLEdBQUcsQ0FBQyxNQUFRLFNBQVNDLEdBQVEsT0FBT2hCLEVBQUlpQixNQUFNLGdCQUFnQixJQUFJLENBQUVqQixFQUFJa0IsT0FBUWhCLEVBQUcsSUFBSSxDQUFDaUIsWUFBWSxLQUFLZixNQUFNLE1BQVFKLEVBQUlrQixTQUFVbE
2IsRUFBSW9CLFdBQVlsQixFQUFHLE9BQU8sQ0FBQ21CLFNBQVMsQ0FBQyxVQUFZckIsRUFBSXNCLEdBQUd0QixFQUFJb0IsZUFBZXBCLEVBQUl1QixLQUFNdkIsRUFBSXdCLFdBQVl0QixFQUFHLFVBQVUsQ0FBQ2lCLFlBQVksT0FBT1QsTUFBTSxDQUFDLFdBQWFWLEVBQUlPLFVBQTZCLFdBQWpCUCxFQUFJTyxTQUF3QixRQUFVLFlBQVlQLEVBQUl1QixLQUFNdkIsRUFBSWEsaUJBQWtCWCxFQUFHLE1BQU0sQ0FBQ2lCLFlBQVksa0JBQWtCLENBQUNqQixFQUFHLE9BQU8sQ0FBQ2lCLFlBQVksbUNBQW1DVCxNQUFNLENBQUMsS0FBTyxTQUFTLGNBQWMsWUFBWVYsRUFBSXVCLE1BQU0sRUFDdnNCLEVBQ0lFLEVBQWtCLEdDZXRCLEdBQ0FDLEtBQUEscUJBRUFDLE1BQUEsQ0FDQVAsV0FBQSxDQUNBUSxLQUFBQyxRQUdBWCxPQUFBLENBQ0FVLEtBQUFDLFFBR0F0QixTQUFBLENBQ0FxQixLQUFBQyxPQUNBQyxVQUFBLEVBQ0FDLFFBQUEsV0FHQXBCLFdBQUEsQ0FDQWlCLEtBQUFJLFFBQ0FELFNBQUEsR0FHQWxCLGlCQUFBLENBQ0FpQixVQUFBLEdBR0FsQixrQkFBQSxDQUNBa0IsVUFBQSxHQUdBaEIsdUJBQUEsQ0FDQWdCLFVBQUEsRUFDQUMsU0FBQSxHQUdBdkIsTUFBQSxDQUNBb0IsS0FBQUksUUFDQUQsU0FBQSxHQUdBdEIsTUFBQSxDQUNBbUIsS0FBQUksUUFDQUQsU0FBQSxHQUdBMUIsbUJBQUEsQ0FDQXVCLEtBQUFDLE9BQ0FDLFVBQUEsRUFDQUMsUUFBQSxJQUdBUCxXQUFBLENBQ0FPLFNBQUEsS0MzRTBRLEksV0NPdFFFLEdBQVksT0FDZCxFQUNBbEMsRUFDQTBCLEdBQ0EsRUFDQSxLQUNBLFdBQ0EsTUFJRixFQUFlUSxFQUFpQixPLHFFQ2xCaEMsSUFBSWxDLEVBQVMsV0FBa0IsSUFBSUMsRUFBSUMsS0FBS0MsRUFBR0YsRUFBSUcsTUFBTUQsR0FBRyxPQUFPQSxFQUFHLE1BQU0sQ0FBQ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FVL0ksS0FBS3VJLFlBQVlRLEVBQU9OLEdBQWlCLEVBQU9pSSxFQUFnQixFQUFJLEVBQzFGLEciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9hZG1pbi9BZG1pblNwaW5uZXJCdXR0b24udnVlIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC9zcmMvY29tcG9uZW50cy9hZG1pbi9BZG1pblNwaW5uZXJCdXR0b24udnVlIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2FkbWluL0FkbWluU3Bpbm5lckJ1dHRvbi52dWU/ODZiMiIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9hZG1pbi9BZG1pblNwaW5uZXJCdXR0b24udnVlP2RlMGUiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvYWRtaW4vWlJlcG9ydFRyYW5zZmVycy52dWUiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kL3NyYy9jb21wb25lbnRzL2FkbWluL1pSZXBvcnRUcmFuc2ZlcnMudnVlIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2FkbWluL1pSZXBvcnRUcmFuc2ZlcnMudnVlP2E5M2EiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvYWRtaW4vWlJlcG9ydFRyYW5zZmVycy52dWU/NmIwNCIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvLi9zcmMvbWl4aW5zL0Zvcm1hdHRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCl7dmFyIF92bT10aGlzLF9jPV92bS5fc2VsZi5fYztyZXR1cm4gX2MoJ2J1dHRvbicse2NsYXNzOltcbiAgICAgICAgJ2J0biBzcGlubmVyLWJ1dHRvbicgKyAnICcgKyBfdm0uZXh0cmFCdXR0b25DbGFzc2VzLFxuICAgICAgICBfdm0uYnNDb2xvdXIgPT09IHVuZGVmaW5lZCA/ICdidG4tcHJpbWFyeScgOiAnYnRuLScgKyBfdm0uYnNDb2xvdXIsXG4gICAgICAgIHsgJ2J0bi1zbSc6IF92bS5zbWFsbCB9LFxuICAgICAgICB7ICdidG4tbGcnOiBfdm0ubGFyZ2UgfSxcbiAgICBdLGF0dHJzOntcInR5cGVcIjpfdm0uc3VibWl0RnVuYyA/ICdzdWJtaXQnIDogJ2J1dHRvbicsXCJkaXNhYmxlZFwiOl92bS5kaXNhYmxlZENvbmRpdGlvbiA/IF92bS5kaXNhYmxlZENvbmRpdGlvbiA6IF92bS5zcGlubmVyQ29uZGl0aW9uIHx8IF92bS5leHRyYURpc2FibGVkQ29uZGl0aW9ufSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7cmV0dXJuIF92bS4kZW1pdCgnYnV0dG9uQ2xpY2tlZCcpfX19LFsoX3ZtLmJzSWNvbik/X2MoJ2knLHtzdGF0aWNDbGFzczpcImJpXCIsY2xhc3M6J2JpLScgKyBfdm0uYnNJY29ufSk6KF92bS5idXR0b25UZXh0KT9fYygnc3Bhbicse2RvbVByb3BzOntcImlubmVySFRNTFwiOl92bS5fcyhfdm0uYnV0dG9uVGV4dCl9fSk6X3ZtLl9lKCksKF92bS5hZGRLZXlJY29uKT9fYygnd3N5LWtleScse3N0YXRpY0NsYXNzOlwibXMtMVwiLGF0dHJzOntcImljb25Db2xvdXJcIjpfdm0uYnNDb2xvdXIgJiYgX3ZtLmJzQ29sb3VyID09PSAnZGFuZ2VyJyA/ICdsaWdodCcgOiAnZGFuZ2VyJ319KTpfdm0uX2UoKSwoX3ZtLnNwaW5uZXJDb25kaXRpb24pP19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImJ1dHRvbi1vdmVybGF5XCJ9LFtfYygnc3Bhbicse3N0YXRpY0NsYXNzOlwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIixhdHRyczp7XCJyb2xlXCI6XCJzdGF0dXNcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9fSldKTpfdm0uX2UoKV0sMSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwiPHRlbXBsYXRlPlxuICAgIDxidXR0b25cbiAgICAgICAgOnR5cGU9XCJzdWJtaXRGdW5jID8gJ3N1Ym1pdCcgOiAnYnV0dG9uJ1wiXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICdidG4gc3Bpbm5lci1idXR0b24nICsgJyAnICsgZXh0cmFCdXR0b25DbGFzc2VzLFxuICAgICAgICAgICAgYnNDb2xvdXIgPT09IHVuZGVmaW5lZCA/ICdidG4tcHJpbWFyeScgOiAnYnRuLScgKyBic0NvbG91cixcbiAgICAgICAgICAgIHsgJ2J0bi1zbSc6IHNtYWxsIH0sXG4gICAgICAgICAgICB7ICdidG4tbGcnOiBsYXJnZSB9LFxuICAgICAgICBdXCJcbiAgICAgICAgQGNsaWNrPVwiJGVtaXQoJ2J1dHRvbkNsaWNrZWQnKVwiXG4gICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkQ29uZGl0aW9uID8gZGlzYWJsZWRDb25kaXRpb24gOiBzcGlubmVyQ29uZGl0aW9uIHx8IGV4dHJhRGlzYWJsZWRDb25kaXRpb25cIlxuICAgID5cbiAgICAgICAgPGkgdi1pZj1cImJzSWNvblwiIGNsYXNzPVwiYmlcIiA6Y2xhc3M9XCInYmktJyArIGJzSWNvblwiPjwvaT5cbiAgICAgICAgPHNwYW4gdi1lbHNlLWlmPVwiYnV0dG9uVGV4dFwiIHYtaHRtbD1cImJ1dHRvblRleHRcIj48L3NwYW4+XG4gICAgICAgIDx3c3kta2V5IHYtaWY9XCJhZGRLZXlJY29uXCIgOmljb25Db2xvdXI9XCJic0NvbG91ciAmJiBic0NvbG91ciA9PT0gJ2RhbmdlcicgPyAnbGlnaHQnIDogJ2RhbmdlcidcIiBjbGFzcz1cIm1zLTFcIiAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLW92ZXJsYXlcIiB2LWlmPVwic3Bpbm5lckNvbmRpdGlvblwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWh
2pZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBuYW1lOiBcIkFkbWluU3Bpbm5lckJ1dHRvblwiLFxuXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYnV0dG9uVGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICB9LFxuXG4gICAgICAgIGJzSWNvbjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICB9LFxuXG4gICAgICAgIGJzQ29sb3VyOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBcInByaW1hcnlcIixcbiAgICAgICAgfSxcblxuICAgICAgICBzdWJtaXRGdW5jOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgfSxcblxuICAgICAgICBzcGlubmVyQ29uZGl0aW9uOiB7XG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcblxuICAgICAgICBkaXNhYmxlZENvbmRpdGlvbjoge1xuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuXG4gICAgICAgIGV4dHJhRGlzYWJsZWRDb25kaXRpb246IHtcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuXG4gICAgICAgIHNtYWxsOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG5cbiAgICAgICAgbGFyZ2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcblxuICAgICAgICBleHRyYUJ1dHRvbkNsYXNzZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IFwiXCIsXG4gICAgICAgIH0sXG5cbiAgICAgICAgYWRkS2V5SWNvbjoge1xuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgfSxcbn1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBzY29wZWQ+PC9zdHlsZT5cbiIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNDAudXNlWzFdIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9AdnVlL3Z1ZS1sb2FkZXItdjE1L2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQWRtaW5TcGlubmVyQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTQwLnVzZVsxXSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS92dWUtbG9hZGVyLXYxNS9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FkbWluU3Bpbm5lckJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vQWRtaW5TcGlubmVyQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wYTAyNjQ0NyZzY29wZWQ9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FkbWluU3Bpbm5lckJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWRtaW5TcGlubmVyQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS92dWUtbG9hZGVyLXYxNS9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCIwYTAyNjQ0N1wiLFxuICBudWxsXG4gIFxuKVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsInZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKXt2YXIgX3ZtPXRoaXMsX2M9X3ZtLl9zZWxmLl9jO3JldHVybiBfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJwLTRcIn0sW19jKCdoMScsW192bS5fdihfdm0uX3MoX3ZtLiR0KFwiYWRtaW4uel9yZXBvcnRzLnRyYW5zZmVycy50cmFuc2ZlcnNcIikpKV0pLChfdm0uelJlcG9ydERhdGEpP19jKCdyb3V0ZXItbGluaycse3N0YXRpY0NsYXNzOlwiZmxvYXQtZW5kIG1zLTMgbXQtMVwiLGF0dHJzOntcInRvXCI6eyBuYW1lOiAnWlJlcG9ydCcsIHBhcmFtczogeyB1dWlkOiBfdm0uelJlcG9ydERhdGEudXVpZCB9IH0sXCJ0aXRsZVwiOl92bS4kdCgncG9zLmluZm9ybWF0aW9uJyl9fSxbX2MoJ2J1dHRvbicse3N0YXRpY0NsYXNzOlwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiLGF0dHJzOntcInR5cGVcIjpcImJ1dHRvblwifX0sW192bS5fdihcIiBcIitfdm0uX3MoX3ZtLiR0KFwidHlwZXMuXCIgKyAoX3ZtLnpSZXBvcnREYXRhLmNsb3NlZCA/IFwielwiIDogXCJ4XCIpICsgXCJfcmVwb3J0XCIpKStcIiBcIildKV0pOl92bS5fZSgpLChfdm0udHJhbnNmZXJzTG9hZGVkKT9fYygnZGl2Jyxfdm0uX2woKF92bS5pbnRlZ3JhdGlvblRyYW5zZmVycyksZnVuY3Rpb24oaW50ZWdyYXRpb25EYXRhKXtyZXR1cm4gX2MoJ2Rpdicse2tleTppbnRlZ3JhdGlvbkRhdGEuaW50ZWdyYXRpb24udXVpZH0sW19jKCdoMicsW192bS5fdihcIiBcIitfdm0uX3MoaW50ZWdyYXRpb25EYXRhLmludGVncmF0aW9uLm5hbWUpK1wiIFwiKSxfYygnc3Bhbicse3N0YXRpY0NsYXNzOlwic21hbGwgdGV4dC1tdXRlZFwifSxbX3ZtLl92KF92bS5fcyhpbnRlZ3JhdGlvbkRhdGEuaW50ZWdyYXRpb24uZXh0ZXJuYWxfc3lzdGVtID8gaW50ZWdyYXRpb25EYXRhLmludGVncmF0aW9uLmV4dGVybmFsX3N5c3RlbS5mb3JtYXR0ZWRfbmFtZSA6IFwiTi9BXCIpKV0pLF9jKCdpJyx7c3RhdGljQ2xhc3M6XCJiaSBiaS1rZXktZmlsbFwifSldKSxfYygndGFibGUnLHtzdGF0aWNDbGFzczpcInRhYmxlIHRhYmxlLXN0cmlwZWRcIn0sW19jKCd0aGVhZCcsW19jKCd0cicsW19jKCd0aCcsW192bS5fdihfdm0uX3MoX3ZtLiR0KFwiYWRtaW4uel9yZXBvcnRzLnRyYW5zZmVycy5iZWd1blwiKSkpXSksX2MoJ3RoJyx7c3RhdGljQ2xhc3M6XCJhY3Rpb25zXCJ9LFtfdm0uX3YoX3ZtLl9zKF92bS4kdChcImdlbmVyYWwuc3VjY2Vzc1wiKSkpXSksKF92bS5pbnRlZ3JhdGlvbkhhc1N5c3RlbVdpdGhOYW1lKGludGVncmF0aW9uRGF0YS5pbnRlZ3JhdGlvbiwgJ2Vjb25vbWljJykpP19jKCd0aCcse3N0YXRpY0NsYXNzOlwiYWN0aW9uc1wifSxbX3ZtLl92KFwiIFwiK192bS5fcyhfdm0uJHQoXCJhZG1pbi56X3JlcG9ydHMudHJhbnNmZXJzLnBkZl9zdWNjZXNzXCIpKStcIiBcIildKTpfdm0uX2UoKSxfYygndGgnLFtfdm0uX3YoX3ZtLl9zKF92bS4kdChcImdlbmVyYWwuZXJyb3JfbWVzc2FnZXNcIikpKV0pXSldKSxfYygndGJvZHknLF92bS5fbCgoaW50ZWdyYXRpb25EYXRhLnRyYW5zZmVycyksZnVuY3Rpb24odHJhbnNmZXIpe3JldHVybiBfYygndHInLHtrZXk6dHJhbnNmZXIudXVpZH0sW19jKCd0ZCcsW192bS5fdihfdm0uX3MoX3ZtLmZvcm1hdERhdGVUaW1lKHRyYW5zZmVyLmNyZWF0ZWRfYXQpKSldKSxfYygndGQnLHtzdGF0aWNDbGFzczpcImFjdGlvbnNcIn0sWyh0cmFuc2Zlci5zdWNjZXNzKT9fYygnaScse3N0YXRpY0NsYXNzOlwiYmkgYmktY2hlY2stc3F1YXJlIGZzLTVcIn0pOl92bS5fZSgpXSksKF92bS5pbnRlZ3JhdGlvbkhhc1N5c3RlbVdpdGhOYW1lKGludGVncmF0aW9uRGF0YS5pbnRlZ3JhdGlvbiwgJ2Vjb25vbWljJykpP19jKCd0ZCcse3N0YXRpY0NsYXNzOlwiYWN0aW9uc1wifSxbKHRyYW5zZmVyLmRhdGEucGRmX3N1Y2Nlc3MpP19jKCdpJyx7c3RhdGljQ2xhc3M6XCJiaSBiaS1jaGVjay1zcXVhcmUgZnMtNVwifSk6X3ZtLl9lKCldKTpfdm0uX2UoKSxfYygndGQnLHtkb21Qcm9wczp7XCJpbm5lckhUTUxcIjpfdm0uX3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
2HRyYW5zZmVyLmRhdGEgJiYgdHJhbnNmZXIuZGF0YS5lcnJvcnMgJiYgdHJhbnNmZXIuZGF0YS5lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gT2JqZWN0LmVudHJpZXModHJhbnNmZXIuZGF0YS5lcnJvcnMpLmpvaW4oJzxicj4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9fSldKX0pLDApXSldKX0pLDApOl9jKCdkaXYnLFtfYygnc3Bhbicse3N0YXRpY0NsYXNzOlwic3Bpbm5lci1ib3JkZXJcIixhdHRyczp7XCJyb2xlXCI6XCJzdGF0dXNcIixcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9fSldKV0sMSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwiPHRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJwLTRcIj5cbiAgICAgICAgPCEtLSA8aDEgdi1pZj1cImhlYWRpbmdTaXplID09PSAnbGFyZ2UnXCI+e3sgJHQoJ2FkbWluLnpfcmVwb3J0cy50cmFuc2ZlcnMudHJhbnNmZXJzJykgfX08L2gxPlxuICAgICAgICA8aDQgdi1lbHNlLWlmPVwiaGVhZGluZ1NpemUgPT09ICdzbWFsbCdcIj57eyAkdCgnYWRtaW4uel9yZXBvcnRzLnRyYW5zZmVycy50cmFuc2ZlcnMnKSB9fTwvaDQ+IC0tPlxuICAgICAgICA8aDE+e3sgJHQoXCJhZG1pbi56X3JlcG9ydHMudHJhbnNmZXJzLnRyYW5zZmVyc1wiKSB9fTwvaDE+XG4gICAgICAgIDxyb3V0ZXItbGlua1xuICAgICAgICAgICAgdi1pZj1cInpSZXBvcnREYXRhXCJcbiAgICAgICAgICAgIDp0bz1cInsgbmFtZTogJ1pSZXBvcnQnLCBwYXJhbXM6IHsgdXVpZDogelJlcG9ydERhdGEudXVpZCB9IH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJmbG9hdC1lbmQgbXMtMyBtdC0xXCJcbiAgICAgICAgICAgIDp0aXRsZT1cIiR0KCdwb3MuaW5mb3JtYXRpb24nKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgIHt7ICR0KFwidHlwZXMuXCIgKyAoelJlcG9ydERhdGEuY2xvc2VkID8gXCJ6XCIgOiBcInhcIikgKyBcIl9yZXBvcnRcIikgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3JvdXRlci1saW5rPlxuICAgICAgICA8ZGl2IHYtaWY9XCJ0cmFuc2ZlcnNMb2FkZWRcIj5cbiAgICAgICAgICAgIDxkaXYgdi1mb3I9XCJpbnRlZ3JhdGlvbkRhdGEgaW4gaW50ZWdyYXRpb25UcmFuc2ZlcnNcIiA6a2V5PVwiaW50ZWdyYXRpb25EYXRhLmludGVncmF0aW9uLnV1aWRcIj5cbiAgICAgICAgICAgICAgICA8aDI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGludGVncmF0aW9uRGF0YS5pbnRlZ3JhdGlvbi5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic21hbGwgdGV4dC1tdXRlZFwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlZ3JhdGlvbkRhdGEuaW50ZWdyYXRpb24uZXh0ZXJuYWxfc3lzdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbnRlZ3JhdGlvbkRhdGEuaW50ZWdyYXRpb24uZXh0ZXJuYWxfc3lzdGVtLmZvcm1hdHRlZF9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIk4vQVwiXG4gICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLWtleS1maWxsXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvaDI+XG5cbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3sgJHQoXCJhZG1pbi56X3JlcG9ydHMudHJhbnNmZXJzLmJlZ3VuXCIpIH19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJhY3Rpb25zXCI+e3sgJHQoXCJnZW5lcmFsLnN1Y2Nlc3NcIikgfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiaW50ZWdyYXRpb25IYXNTeXN0ZW1XaXRoTmFtZShpbnRlZ3JhdGlvbkRhdGEuaW50ZWdyYXRpb24sICdlY29ub21pYycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICR0KFwiYWRtaW4uel9yZXBvcnRzLnRyYW5zZmVycy5wZGZfc3VjY2Vzc1wiKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7ICR0KFwiZ2VuZXJhbC5lcnJvcl9tZXNzYWdlc1wiKSB9fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgdi1mb3I9XCJ0cmFuc2ZlciBpbiBpbnRlZ3JhdGlvbkRhdGEudHJhbnNmZXJzXCIgOmtleT1cInRyYW5zZmVyLnV1aWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgZm9ybWF0RGF0ZVRpbWUodHJhbnNmZXIuY3JlYXRlZF9hdCkgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFjdGlvbnNcIj48aSBjbGFzcz1cImJpIGJpLWNoZWNrLXNxdWFyZSBmcy01XCIgdi1pZj1cInRyYW5zZmVyLnN1Y2Nlc3NcIj48L2k+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cImludGVncmF0aW9uSGFzU3lzdGVtV2l0aE5hbWUoaW50ZWdyYXRpb25EYXRhLmludGVncmF0aW9uLCAnZWNvbm9taWMnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLWNoZWNrLXNxdWFyZSBmcy01XCIgdi1pZj1cInRyYW5zZmVyLmRhdGEucGRmX3N1Y2Nlc3NcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1odG1sPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zlci5kYXRhICYmIHRyYW5zZmVyLmRhdGEuZXJyb3JzICYmIHRyYW5zZmVyLmRhdGEuZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBPYmplY3QuZW50cmllcyh0cmFuc2Zlci5kYXRhLmVycm9ycykuam9pbignPGJyPicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgdi1lbHNlPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGlubmVyLWJvcmRlclwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWh
2pZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBBZG1pblNwaW5uZXJCdXR0b24gZnJvbSBcIi4vQWRtaW5TcGlubmVyQnV0dG9uLnZ1ZVwiXG5pbXBvcnQgZm9ybWF0dGVyIGZyb20gXCJAL21peGlucy9Gb3JtYXR0ZXIuanNcIlxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgY29tcG9uZW50czogeyBBZG1pblNwaW5uZXJCdXR0b24gfSxcbiAgICBuYW1lOiBcIlpSZXBvcnRUcmFuc2ZlcnNcIixcbiAgICBtaXhpbnM6IFtmb3JtYXR0ZXJdLFxuICAgIHByb3BzOiBbXCJ6UmVwb3J0XCJdLFxuXG4gICAgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHpSZXBvcnREYXRhOiBmYWxzZSxcbiAgICAgICAgICAgIGludGVncmF0aW9uVHJhbnNmZXJzOiBbXSxcbiAgICAgICAgICAgIHRyYW5zZmVyc0xvYWRlZDogZmFsc2UsXG4gICAgICAgICAgICByZXRyeWluZ1pSZXBvcnRUcmFuc2ZlcjogZmFsc2UsXG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBhc3luYyBnZXRaUmVwb3J0KCkge1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy53c3lBUEkuZ2V0KFwiei1yZXBvcnRzL1wiICsgdGhpcy4kcm91dGUucGFyYW1zLnV1aWQpXG5cbiAgICAgICAgICAgIGlmICh0aGlzLndzeUFQSS52YWxpZGF0ZVJlc3BvbnNlKHJlc3BvbnNlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuelJlcG9ydERhdGEgPSByZXNwb25zZS56X3JlcG9ydFxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBhc3luYyBnZXRUcmFuc2ZlcnMoKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zZmVyc0xvYWRlZCA9IGZhbHNlXG5cbiAgICAgICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IHRoaXMud3N5QVBJLmdldChcInotcmVwb3J0cy9cIiArIHRoaXMuJHJvdXRlLnBhcmFtcy51dWlkICsgXCIvdHJhbnNmZXJzXCIpXG5cbiAgICAgICAgICAgIGlmICh0aGlzLndzeUFQSS52YWxpZGF0ZVJlc3BvbnNlKHJlc3BvbnNlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW50ZWdyYXRpb25UcmFuc2ZlcnMgPSByZXNwb25zZS5pbnRlZ3JhdGlvbl90cmFuc2ZlcnNcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy50cmFuc2ZlcnNMb2FkZWQgPSB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgcmV0cnlaUmVwb3J0VHJhbnNmZXIoaW50ZWdyYXRpb25VdWlkKSB7XG4gICAgICAgICAgICB0aGlzLnJldHJ5aW5nWlJlcG9ydFRyYW5zZmVyID0gdHJ1ZVxuXG4gICAgICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgICAgIHJlZ2lzdGVyX3V1aWQ6IHRoaXMuJHJvdXRlLnF1ZXJ5LnJlZ2lzdGVyX3V1aWQsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IHRoaXMud3N5QVBJLnBvc3QoXCJlLWNvbm9taWMtaW50ZWdyYXRpb25zL1wiICsgaW50ZWdyYXRpb25VdWlkICsgXCIvcmVzdGFydFwiLCBkYXRhKVxuXG4gICAgICAgICAgICBpZiAodGhpcy53c3lBUEkudmFsaWRhdGVSZXNwb25zZShyZXNwb25zZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzdWNjZXNzTm90aWZ5XCIsIFwiU3VjY2Vzc2Z1bGx5IHN0YXJ0ZWQgcHJvY2VzcyB0byByZXRyeSBhbnkgaW5jb21wbGV0ZSB0cmFuc2ZlcnMuXCIpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcImRhbmdlck5vdGlmeVwiLCBcIlNlcnZlciByZXR1cm5lZCBhbiBlcnJvcjogXCIgKyByZXNwb25zZS5tZXNzYWdlKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJldHJ5aW5nWlJlcG9ydFRyYW5zZmVyID0gZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBpbnRlZ3JhdGlvbkhhc1N5c3RlbVdpdGhOYW1lKGludGVncmF0aW9uLCBzeXN0ZW1OYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gaW50ZWdyYXRpb24uZXh0ZXJuYWxfc3lzdGVtICYmIGludGVncmF0aW9uLmV4dGVybmFsX3N5c3RlbS5uYW1lID09PSBzeXN0ZW1OYW1lXG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIGNyZWF0ZWQoKSB7XG4gICAgICAgIHRoaXMuZ2V0WlJlcG9ydCgpXG4gICAgICAgIHRoaXMuZ2V0VHJhbnNmZXJzKClcbiAgICB9LFxuXG4gICAgbW91bnRlZCgpIHtcbiAgICAgICAgLy9cbiAgICB9LFxufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIHNjb3BlZD48L3N0eWxlPlxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC00MC51c2VbMV0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B2dWUvdnVlLWxvYWRlci12MTUvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9aUmVwb3J0VHJhbnNmZXJzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTQwLnVzZVsxXSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS92dWUtbG9hZGVyLXYxNS9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1pSZXBvcnRUcmFuc2ZlcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCIiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL1pSZXBvcnRUcmFuc2ZlcnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc5YzUzZWU3JnNjb3BlZD10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vWlJlcG9ydFRyYW5zZmVycy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIlxuZXhwb3J0ICogZnJvbSBcIi4vWlJlcG9ydFRyYW5zZmVycy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpem
2VyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B2dWUvdnVlLWxvYWRlci12MTUvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIFwiNzljNTNlZTdcIixcbiAgbnVsbFxuICBcbilcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJpbXBvcnQgeyB0b1pvbmVkVGltZSB9IGZyb20gXCJkYXRlLWZucy10elwiXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBjb21wdXRlZDoge1xuICAgICAgICBsb2NhbGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldExvY2FsZSgpXG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgcmVzb2x2ZUZvcm1hdHRlckNvbnRleHQoKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudENvbXBvbmVudCA9IHRoaXNcblxuICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudENvbXBvbmVudC5mb3JtYXR0ZXJDb250ZXh0ICYmIHR5cGVvZiBjdXJyZW50Q29tcG9uZW50LmZvcm1hdHRlckNvbnRleHQgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb21wb25lbnQuZm9ybWF0dGVyQ29udGV4dFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGN1cnJlbnRDb21wb25lbnQgPSBjdXJyZW50Q29tcG9uZW50LiRwYXJlbnRcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHt9XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0TG9jYWxlKCkge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVyQ29udGV4dCA9IHRoaXMucmVzb2x2ZUZvcm1hdHRlckNvbnRleHQoKVxuXG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVyQ29udGV4dC5sb2NhbGUgPz8gdGhpcy4kc3RvcmU/LmdldHRlcnM/LmNvbXBhbnk/LmxvY2FsZSA/PyBcImRhLURLXCJcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRUaW1lem9uZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlckNvbnRleHQgPSB0aGlzLnJlc29sdmVGb3JtYXR0ZXJDb250ZXh0KClcblxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlckNvbnRleHQudGltZXpvbmUgPz8gdGhpcy4kc3RvcmU/LmdldHRlcnM/LmNvbXBhbnk/LnRpbWV6b25lID8/IFwiRXVyb3BlL0NvcGVuaGFnZW5cIlxuICAgICAgICB9LFxuXG4gICAgICAgIGZvcm1hdERhdGVUaW1lRnJvbURhdGUoZGF0ZSwgd2Vla2RheUZvcm1hdE9yRmFsc2UgPSBmYWxzZSkge1xuICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgICAgICAgICAgICAgbW9udGg6IFwibnVtZXJpY1wiLFxuICAgICAgICAgICAgICAgIGRheTogXCJudW1lcmljXCIsXG4gICAgICAgICAgICAgICAgaG91cjogXCIyLWRpZ2l0XCIsXG4gICAgICAgICAgICAgICAgbWludXRlOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICBzZWNvbmQ6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgICAgICAgIHRpbWVab25lOiB0aGlzLmdldFRpbWV6b25lKCksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh3ZWVrZGF5Rm9ybWF0T3JGYWxzZSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMud2Vla2RheSA9IHdlZWtkYXlGb3JtYXRPckZhbHNlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSwgb3B0aW9ucylcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBJZiBvbWl0RGF0ZUlmU2FtZURhdGUsIHRoZSBkYXRlVGltZSB3aWxsIGFsd2F5cyBiZSBwcmludGVkIHdpdGggZnVsbCBkYXRlOyBpZiBpdCBpcyBub3QgZmFsc2UsIGNhbiBwcm9kdWNlXG4gICAgICAgIC8vIGEgdmFsaWQgRGF0ZSwgYW5kIGJvdGggZGF0ZXMgYXJlIHRoZSBzYW1lLCB0aGUgZGF0ZSBwYXJ0IHdpbGwgYmUgb21pdHRlZFxuICAgICAgICAvLyBUT0RPOiBFcnJvciBoYW5kbGluZ1xuICAgICAgICBmb3JtYXREYXRlVGltZShkYXRlVGltZSwgb21pdERhdGVJZlNhbWVEYXRlID0gZmFsc2UpIHtcbiAgICAgICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoZGF0ZVRpbWUpXG5cbiAgICAgICAgICAgIGxldCByZWZlcmVuY2VEYXRlID0gb21pdERhdGVJZlNhbWVEYXRlID09PSBmYWxzZSA/IGZhbHNlIDogbmV3IERhdGUob21pdERhdGVJZlNhbWVEYXRlKVxuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlRGF0ZSAhPT0gZmFsc2UgJiZcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VEYXRlIGluc3RhbmNlb2YgRGF0ZSAmJlxuICAgICAgICAgICAgICAgIGRhdGUuZ2V0RGF0ZSgpID09PSByZWZlcmVuY2VEYXRlLmdldERhdGUoKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGhvdXI6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgICAgICAgICAgICBtaW51dGU6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgICAgICAgICAgICBzZWNvbmQ6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgICAgICAgICAgICB0aW1lWm9uZTogdGhpcy5nZXRUaW1lem9uZSgpLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvL2xldCBvcHRpb25zID0geyB0aW1lU3R5bGU6ICdtZWRpdW0nIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcodGhpcy5sb2NhbGUsIG9wdGlvbnMpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHllYXI6IFwibnVtZXJpY1wiLFxuICAgICAgICAgICAgICAgIG1vbnRoOiBcIm51bWVyaWNcIixcbiAgICAgICAgICAgICAgICBkYXk6IFwibnVtZXJpY1wiLFxuICAgICAgICAgICAgICAgIGhvdXI6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgICAgICAgIG1pbnV0ZTogXCIyLWRpZ2l0XCIsXG4gICAgICAgICAgICAgICAgc2Vjb25kOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICB0aW1lWm9uZTogdGh
2pcy5nZXRUaW1lem9uZSgpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUsIG9wdGlvbnMpXG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0RGF0ZVRpbWVXaXRob3V0U2Vjb25kcyhkYXRlVGltZSkge1xuICAgICAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZShkYXRlVGltZSlcbiAgICAgICAgICAgIGxldCBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHllYXI6IFwibnVtZXJpY1wiLFxuICAgICAgICAgICAgICAgIG1vbnRoOiBcIm51bWVyaWNcIixcbiAgICAgICAgICAgICAgICBkYXk6IFwibnVtZXJpY1wiLFxuICAgICAgICAgICAgICAgIGhvdXI6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgICAgICAgIG1pbnV0ZTogXCIyLWRpZ2l0XCIsXG4gICAgICAgICAgICAgICAgdGltZVpvbmU6IHRoaXMuZ2V0VGltZXpvbmUoKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlLCBvcHRpb25zKVxuICAgICAgICB9LFxuICAgICAgICBmb3JtYXREYXRlVGltZVdpdGhZZWFyKGRhdGVUaW1lKSB7XG4gICAgICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKGRhdGVUaW1lKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBkYXRlLmdldERhdGUoKSArXG4gICAgICAgICAgICAgICAgXCIvXCIgK1xuICAgICAgICAgICAgICAgIChkYXRlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgICAgICAgXCItXCIgK1xuICAgICAgICAgICAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSArXG4gICAgICAgICAgICAgICAgXCIga2wuIFwiICtcbiAgICAgICAgICAgICAgICBkYXRlLmdldEhvdXJzKCkgK1xuICAgICAgICAgICAgICAgIFwiOlwiICtcbiAgICAgICAgICAgICAgICBTdHJpbmcoZGF0ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsIFwiMFwiKVxuICAgICAgICAgICAgKVxuICAgICAgICB9LFxuICAgICAgICBmb3JtYXRMZXNzUHJlY2lzZURhdGVUaW1lKGRhdGVUaW1lKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gdGhpcy50b0NvbXBhbnlUaW1lKGRhdGVUaW1lKVxuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIGRhdGUuZ2V0RGF0ZSgpICtcbiAgICAgICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICAgICAgKGRhdGUuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgICAgICAgICAgICBcIiBrbC4gXCIgK1xuICAgICAgICAgICAgICAgIGRhdGUuZ2V0SG91cnMoKSArXG4gICAgICAgICAgICAgICAgXCI6XCIgK1xuICAgICAgICAgICAgICAgIFN0cmluZyhkYXRlLmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwgXCIwXCIpXG4gICAgICAgICAgICApXG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0RGF0ZShkYXRlLCBvdmVyd3JpdGVPcHRpb25zID0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgICAgICAgICAgICAgbW9udGg6IFwibnVtZXJpY1wiLFxuICAgICAgICAgICAgICAgIGRheTogXCJudW1lcmljXCIsXG4gICAgICAgICAgICAgICAgdGltZVpvbmU6IHRoaXMuZ2V0VGltZXpvbmUoKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG92ZXJ3cml0ZU9wdGlvbnMgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbihvcHRpb25zLCBvdmVyd3JpdGVPcHRpb25zKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUsIG9wdGlvbnMpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlKVxuXG4gICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUsIG9wdGlvbnMpXG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0RGF0ZUZ1bGxMZW5ndGgoZGF0ZSwgb3ZlcndyaXRlT3B0aW9ucyA9IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHllYXI6IFwibnVtZXJpY1wiLFxuICAgICAgICAgICAgICAgIG1vbnRoOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICBkYXk6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgICAgICAgIHRpbWVab25lOiB0aGlzLmdldFRpbWV6b25lKCksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvdmVyd3JpdGVPcHRpb25zICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucywgb3ZlcndyaXRlT3B0aW9ucylcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlLCBvcHRpb25zKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZSlcblxuICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlLCBvcHRpb25zKVxuICAgICAgICB9LFxuXG4gICAgICAgIGZvcm1hdEJvb2tpbmdEYXRlKGRhdGVTdHJpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLnRvQ29tcGFueVRpbWUoZGF0ZVN0cmluZylcblxuICAgICAgICAgICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKClcbiAgICAgICAgICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpICsgMVxuICAgICAgICAgICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKVxuXG4gICAgICAgICAgICByZXR1cm4gYCR7ZGF5fS8ke21vbnRofS0ke3llYXJ9YFxuICAgICAgICB9LFxuXG4gICAgICAgIGZvcm1hdFRpbWUoZGF0ZSwgc2Vjb25kcyA9IGZhbHNlKSB7XG4gICAgICAgICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcIlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGRhdGUgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZSlcbiAgICAgICAgICAgI
2H1cblxuICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB7IGhvdXI6IFwiMi1kaWdpdFwiLCBtaW51dGU6IFwiMi1kaWdpdFwiLCB0aW1lWm9uZTogdGhpcy5nZXRUaW1lem9uZSgpIH1cblxuICAgICAgICAgICAgaWYgKHNlY29uZHMpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnNlY29uZCA9IFwiMi1kaWdpdFwiXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZSwgb3B0aW9ucylcbiAgICAgICAgfSxcblxuICAgICAgICBmb3JtYXRUaW1lS2l0Y2hlbihkYXRlKSB7XG4gICAgICAgICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcIlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGRhdGUgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICBob3VyOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICBtaW51dGU6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgICAgICAgIHdlZWtkYXk6IFwic2hvcnRcIixcbiAgICAgICAgICAgICAgICB0aW1lWm9uZTogdGhpcy5nZXRUaW1lem9uZSgpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcodGhpcy5sb2NhbGUsIG9wdGlvbnMpXG4gICAgICAgIH0sXG4gICAgICAgIGdldEN1cnJlbmN5KCkge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVyQ29udGV4dCA9IHRoaXMucmVzb2x2ZUZvcm1hdHRlckNvbnRleHQoKVxuXG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVyQ29udGV4dC5jdXJyZW5jeSA/PyB0aGlzLiRzdG9yZT8uZ2V0dGVycz8uY29tcGFueT8uY3VycmVuY3kgPz8gXCJES0tcIlxuICAgICAgICB9LFxuICAgICAgICBmb3JtYXRQcmljZShhbW91bnQsIGN1cnJlbmN5RGlzcGxheSA9IFwiY29kZVwiLCBwbHVzU2lnbkZvclBvc2l0aXZlQW1vdW50cyA9IGZhbHNlLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSAyKSB7XG4gICAgICAgICAgICBsZXQgcHJlZml4ID0gcGx1c1NpZ25Gb3JQb3NpdGl2ZUFtb3VudHMgJiYgYW1vdW50ID4gMCA/IFwiK1wiIDogXCJcIlxuICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogbWluaW11bUZyYWN0aW9uRGlnaXRzLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIgfVxuXG4gICAgICAgICAgICBpZiAoY3VycmVuY3lEaXNwbGF5ICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGxldCBjdXJyZW5jeSA9IHRoaXMuZ2V0Q3VycmVuY3koKVxuICAgICAgICAgICAgICAgIG9wdGlvbnMuc3R5bGUgPSBcImN1cnJlbmN5XCJcbiAgICAgICAgICAgICAgICBvcHRpb25zLmN1cnJlbmN5ID0gY3VycmVuY3lcbiAgICAgICAgICAgICAgICBvcHRpb25zLmN1cnJlbmN5RGlzcGxheSA9IGN1cnJlbmN5RGlzcGxheVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBhbW91bnQgLyAxMDBcbiAgICAgICAgICAgIC8vIEludGwgcHJpbnRzIFwiLTAsMDBcIiBmb3IgLTAgYW5kIGZvciB0aW55IG5lZ2F0aXZlcyB0aGF0IHJvdW5kIHRvIHplcm9cbiAgICAgICAgICAgIGlmIChNYXRoLmFicyh2YWx1ZSkgPCAwLjAwNSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gMFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgdmFsdWUudG9Mb2NhbGVTdHJpbmcodGhpcy5sb2NhbGUsIG9wdGlvbnMpXG4gICAgICAgIH0sXG5cbiAgICAgICAgY2FwaXRhbGlzZUZpcnN0TGV0dGVyKHN0cikge1xuICAgICAgICAgICAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKVxuICAgICAgICB9LFxuXG4gICAgICAgIHVuaXRBYmJydihsb25nRm9ybSwgdHJhbnNsYXRlUGNzID0gZmFsc2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGFiYnJldmlhdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgZ3JhbTogXCJnXCIsXG4gICAgICAgICAgICAgICAga2lsb2dyYW06IFwia2dcIixcbiAgICAgICAgICAgICAgICBjZW50aW1ldGVyOiBcImNtXCIsXG4gICAgICAgICAgICAgICAgbWV0ZXI6IFwibVwiLFxuICAgICAgICAgICAgICAgIGNlbnRpbGl0ZXI6IFwiY2xcIixcbiAgICAgICAgICAgICAgICBsaXRlcjogXCJsXCIsXG4gICAgICAgICAgICAgICAgbWludXRlOiBcIm1cIixcbiAgICAgICAgICAgICAgICBob3VyOiBcImhcIixcbiAgICAgICAgICAgICAgICBkZWNhZ3JhbTogXCJkZ1wiLFxuICAgICAgICAgICAgICAgIG51bGw6IFwicGNzXCIsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChsb25nRm9ybSBpbiBhYmJyZXZpYXRpb25zKSB7XG4gICAgICAgICAgICAgICAgbGV0IGFiYnJ2ID0gYWJicmV2aWF0aW9uc1tsb25nRm9ybV1cblxuICAgICAgICAgICAgICAgIHJldHVybiBhYmJydiA9PT0gXCJwY3NcIiAmJiB0cmFuc2xhdGVQY3MgPyB0aGlzLiR0KFwicG9zLnVuaXRfYWJicmV2aWF0aW9ucy5wY3NcIikgOiBhYmJydlxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ0Zvcm1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBjYXBpdGFsaXNlQW5kQ29tbWFTZXBhcmF0ZVdlZWtkYXlzKHdlZWtkYXlzLCBhbGxEYXlzRXhjZXB0VGhyZXNob2xkID0gMCkge1xuICAgICAgICAgICAgaWYgKGFsbERheXNFeGNlcHRUaHJlc2hvbGQgPiAwICYmIHdlZWtkYXlzLmxlbmd0aCA8IDcgJiYgd2Vla2RheXMubGVuZ3RoID49IDcgLSBhbGxEYXlzRXhjZXB0VGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogTWFrZSB0aGlzIGNvZGUgbW9yZSBwZXJmb3JtYW50IGJ5IGluc3RlYWQgcGFzc2luZyBvYmplY3Qgb2YgYWxsIHdlZWtkYXlzIHdpdGggYm9vbCB2YWx1ZXNcbiAgICAgICAgICAgICAgICBsZXQgZXhjZXB0ID0gW1wibW9uZGF5XCIsIFwidHVlc2RheVwiLCBcIndlZG5lc2RheVwiLCBcInRodXJzZGF5XCIsIFwiZnJpZGF5XCIsIFwic2F0dXJkYXlcIiwgXCJzdW5kYXlcIl0uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoZCkgPT4gIXdlZWtkYXlzLmluY2x1ZGVzKGQpXG4gICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kdChcImdlbmVyYWwuYWxsX2RheXNfZXhjZXB0XCIpICtcbiAgICAgICAgICAgICAgICAgICAgXCIgXCIgK1xuICAgICAgICAgICAgICAgICAgICBleGNlcHQubWFwKChkKSA9PiB0aGlzLiR0KFwiZ2VuZXJhbC53ZWVrZGF5c19jb3JyZWN0X2NhcGl0YWxpc2F0aW9uLlwiICsgZCkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheXNcbiAgICAgICAgICAgICAgICAubWFwKCh3LCBpbmRleCkgPT4gdGhpcy4kdChcImdlbmVyYWwud2Vla2RheXNcIiArIChpbmRleCA+IDAgPyBcIl9jb3JyZWN0X2NhcGl0YWxpc2F0aW9uXCIgOiBcIlwiKSArIFwiLlwiICsgdykpXG4gICAgICAgICAgICAgICAgLmpvaW4oXCIsIFwiKVxuICAgICAgICB9LFxuXG4gICAgICAgI
2HJlc291cmNlRWRpdENyZWF0ZUhlYWRlcihpc0VkaXRpbmcsIHJlc291cmNlLCBuYW1lID0gbnVsbCwgc2tpcEh0bWxJdGFsaWNzID0gZmFsc2UpIHtcbiAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRvIGNoYW5nZSB0aGlzIHdoZW4gd2Ugc3RhcnQgc3VwcG9ydGluZyBlLmcuIEdlcm1hbiwgd2hlcmUgbm91bnMgd291bGQgaGF2ZSBhIGNhcGl0YWxpemVkIGZpcnN0IGxldHRlclxuICAgICAgICAgICAgbGV0IHRleHQgPVxuICAgICAgICAgICAgICAgIHRoaXMuJHQoXCJnZW5lcmFsLlwiICsgKGlzRWRpdGluZyA9PT0gZmFsc2UgPyBcImNyZWF0ZVwiIDogXCJlZGl0XCIpKSArXG4gICAgICAgICAgICAgICAgXCIgXCIgK1xuICAgICAgICAgICAgICAgIHRoaXMuJHQoXCJ0eXBlcy5cIiArIHJlc291cmNlKS50b0xvd2VyQ2FzZSgpXG5cbiAgICAgICAgICAgIGlmIChpc0VkaXRpbmcgIT09IGZhbHNlICYmIG5hbWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmFtZVN0cmluZ1xuXG4gICAgICAgICAgICAgICAgaWYgKHNraXBIdG1sSXRhbGljcykge1xuICAgICAgICAgICAgICAgICAgICBuYW1lU3RyaW5nID0gXCIgXCIgKyBuYW1lXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZVN0cmluZyA9IFwiIDxlbT5cIiArIG5hbWUgKyBcIjwvZW0+XCJcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0ZXh0ICs9IG5hbWVTdHJpbmdcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRleHRcbiAgICAgICAgfSxcblxuICAgICAgICByZXNvdXJjZUVkaXRDcmVhdGVTdWJtaXRUZX
2h0KGlzRWRpdGluZywgcmVzb3VyY2UpIHtcbiAgICAgICAgICAgIC8vcmV0dXJuIHRoaXMuJHQoJ2dlbmVyYWwuJyArIChpc0VkaXRpbmcgPT09IGZhbHNlID8gJ2NyZWF0ZScgOiAndXBkYXRlJykpICsgJyAnICsgdGhpcy4kdChcInR5cGVzLlwiICsgcmVzb3VyY2UpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBjb25zdCBzdWZmaXggPSB0aGlzLiR0ZShcInR5cGVzLlwiICsgcmVzb3VyY2UpID8gXCIgXCIgKyB0aGlzLiR0KFwidHlwZXMuXCIgKyByZXNvdXJjZSkudG9Mb3dlckNhc2UoKSA6IFwiXCJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLiR0KFwiZ2VuZXJhbC5cIiArIChpc0VkaXRpbmcgPT09IGZhbHNlID8gXCJjcmVhdGVcIiA6IFwidXBkYXRlXCIpKSArIHN1ZmZpeFxuICAgICAgICB9LFxuXG4gICAgICAgIHJlc291cmNlRGVsZXRlVGV4dChyZXNvdXJjZSkge1xuICAgICAgICAgICAgLy9yZXR1cm4gdGhpcy4kdCgnZ2VuZXJhbC4nICsgKGlzRWRpdGluZyA9PT0gZmFsc2UgPyAnY3JlYXRlJyA6ICd1cGRhdGUnKSkgKyAnICcgKyB0aGlzLiR0KFwidHlwZXMuXCIgKyByZXNvdXJjZSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGNvbnN0IHN1ZmZpeCA9IHRoaXMuJHRlKFwidHlwZXMuXCIgKyByZXNvdXJjZSkgPyBcIiBcIiArIHRoaXMuJHQoXCJ0eXBlcy5cIiArIHJlc291cmNlKS50b0xvd2VyQ2FzZSgpIDogXCJcIlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHQoXCJnZW5lcmFsLmRlbGV0ZVwiKSArIHN1ZmZpeFxuICAgICAgICB9LFxuXG4gICAgICAgIGdldEFsbFJlc291cmNlTmFtZVRleHQocmVzb3VyY2VOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy4kdChcImdlbmVyYWwuYWxsX3Jlc291cmNlX25hbWVcIiwgeyByZXNvdXJjZU5hbWUgfSlcbiAgICAgICAgfSxcblxuICAgICAgICBwZW5kaW5nSW52aXRhdGlvblN0YXR1cyhpbnZpdGF0aW9uKSB7XG4gICAgICAgICAgICBpZiAoaW52aXRhdGlvbi5hY2NlcHRlZF9hdCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiR0KFwicG9zLmludml0YXRpb25fc3RhdHVzZXMuYWNjZXB0ZWRcIilcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW52aXRhdGlvbi5yZWplY3RlZF9hdCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiR0KFwicG9zLmludml0YXRpb25fc3RhdHVzZXMucmVqZWN0ZWRcIilcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW52aXRhdGlvbi5leHBpcmVkID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHQoXCJwb3MuaW52aXRhdGlvbl9zdGF0dXNlcy5leHBpcmVkXCIpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiR0KFwicG9zLmludml0YXRpb25fc3RhdHVzZXMub3BlblwiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGZvcm1hdFF1YW50aXR5KHF1YW50aXR5LCB1bml0KSB7XG4gICAgICAgICAgICBpZiAodW5pdCAmJiB1bml0Lm5hbWUgPT09IFwiZGVjYWdyYW1cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiAocXVhbnRpdHkgLyAxMDApLnRvTG9jYWxlU3RyaW5nKHRoaXMubG9jYWxlKSArIHRoaXMuZ2V0VW5pdFN1ZmZpeChcImtpbG9ncmFtXCIpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBxdWFudGl0eSArIHRoaXMuZ2V0VW5pdFN1ZmZpeCh1bml0ICE9PSBudWxsID8gdW5pdC5uYW1lIDogbnVsbClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBmb3JtYXRRdWFudGl0eU9mT3JkZXJMaW5lKG9yZGVyTGluZSwgcXVhbnRpdHlQcm9wZXJ0eSA9IFwicXVhbnRpdHlcIikge1xuICAgICAgICAgICAgbGV0IHVuaXQgPSBudWxsXG5cbiAgICAgICAgICAgIGlmIChvcmRlckxpbmU/LnNlbGxhYmxlPy51bml0KSB7XG4gICAgICAgICAgICAgICAgdW5pdCA9IG9yZGVyTGluZS5zZWxsYWJsZS51bml0XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdFF1YW50aXR5KG9yZGVyTGluZVtxdWFudGl0eVByb3BlcnR5XSwgdW5pdClcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRVbml0U3VmZml4KGxvbmdGb3JtKSB7XG4gICAgICAgICAgICBpZiAobG9uZ0Zvcm0gPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcIlxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCIgXCIgKyB0aGlzLnVuaXRBYmJydihsb25nRm9ybSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBvcmRlckxpbmVPcmlnaW5hbFRvdGFsKG9yZGVyTGluZSwgZm9ybWF0dGVkID0gZmFsc2UsIHF1YW50aXR5UHJvcGVydHkgPSBcInF1YW50aXR5XCIpIHtcbiAgICAgICAgICAgIGxldCBvcmlnaW5hbFRvdGFsID0gb3JkZXJMaW5lLnByaWNlICogb3JkZXJMaW5lW3F1YW50aXR5UHJvcGVydHldXG5cbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWQgPyB0aGlzLmZvcm1hdFByaWNlKG9yaWdpbmFsVG90YWwsIGZhbHNlKSA6IG9yaWdpbmFsVG90YWxcbiAgICAgICAgfSxcblxuICAgICAgICBvcmRlckxpbmVDdXJyZW50VG90YWwob3JkZXJMaW5lLCBmb3JtYXR0ZWQgPSBmYWxzZSwgcXVhbnRpdHlQcm9wZXJ0eSA9IFwicXVhbnRpdHlcIikge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRUb3RhbCA9IG9yZGVyTGluZS5wcmljZSAqIG9yZGVyTGluZVtxdWFudGl0eVByb3BlcnR5XVxuXG4gICAgICAgICAgICBjb25zdCBsaW5lRGlzY291bnRQZXJjZW50YWdlID0gb3JkZXJMaW5lLmxpbmVfZGlzY291bnQ/LnBlcmNlbnRhZ2VcblxuICAgICAgICAgICAgaWYgKGxpbmVEaXNjb3VudFBlcmNlbnRhZ2UgIT0gbnVsbCAmJiBsaW5lRGlzY291bnRQZXJjZW50YWdlID4gMCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRUb3RhbCA9IGN1cnJlbnRUb3RhbCAtIE1hdGgucm91bmQoY3VycmVudFRvdGFsICogKGxpbmVEaXNjb3VudFBlcmNlbnRhZ2UgLyAxMDAwKSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZCA/IHRoaXMuZm9ybWF0UHJpY2UoY3VycmVudFRvdGFsLCBmYWxzZSkgOiBjdXJyZW50VG90YWxcbiAgICAgICAgfSxcblxuICAgICAgICBub1R5cGUodHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHQoXCJnZW5lcmFsLm5vX3R5cGVcIiwgeyB0eXBlOiB0aGlzLiR0KFwidHlwZXMuXCIgKyB0eX
2BlKS50b0xvd2VyQ2FzZSgpIH0pXG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0TmFtZU9mV2Vla2RheUZyb21JbnRlZ2VyKG51bWJlciwgbG93ZXJDYXNlID0gdHJ1ZSkge1xuICAgICAgICAgICAgY29uc3Qgd2Vla2RheXMgPSBbXCJTdW5kYXlcIiwgXCJNb25kYXlcIiwgXCJUdWVzZGF5XCIsIFwiV2VkbmVzZGF5XCIsIFwiVGh1cnNkYXlcIiwgXCJGcmlkYXlcIiwgXCJTYXR1cmRheVwiXVxuXG4gICAgICAgICAgICBsZXQgd2Vla2RheSA9IHdlZWtkYXlzW251bWJlcl1cblxuICAgICAgICAgICAgaWYgKGxvd2VyQ2FzZSkge1xuICAgICAgICAgICAgICAgIHdlZWtkYXkgPSB3ZWVrZGF5LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXlcbiAgICAgICAgfSxcblxuICAgICAgICBmb3JtYXRQcm9kdWN0Rm9yRHJvcGRvd24ocCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAocC5wbHUgIT09IG51bGwgPyBwLnBsdSArIFwiIHwgXCIgOiBcIlwiKSArXG4gICAgICAgICAgICAgICAgcC5uYW1lICtcbiAgICAgICAgICAgICAgICBcIiB8IFwiICtcbiAgICAgICAgICAgICAgICAocC5wcmljZSA9PT0gbnVsbCA/IHRoaXMuJHQoXCJhZG1pbi5wcm9kdWN0cy5jYXNoaWVyX2RlY2lkZWRfcHJpY2VcIikgOiB0aGlzLmZvcm1hdFByaWNlKHAucHJpY2UpKVxuICAgICAgICAgICAgKVxuICAgICAgICB9LFxuXG4gICAgICAgIGFkZExpbmtTeW1ib2xJZlNoYXJlZCh0ZXh0LCBtb2RlbFdpdGhDb21wYW55RGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIHRleHQgKyAobW9kZWxXaXRoQ29tcGFueURhdGEuY29tcGFueS50eXBlPy5uYW1lID09PSBcImVudGVycHJpc2VcIiA/IFwiIPCflJdcIiA6IFwiXCIpXG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0Q2FzaGllckZ1bGxOYW1lKGNhc2hpZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBjYXNoaWVyLmZpcnN0X25hbWUgKyBcIiBcIiArIGNhc2hpZXIubGFzdF9uYW1lXG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0UGVyY2VudGFnZSh2YWx1ZSwgb2ZWYWx1ZSwgc2lnbklmUG9zaXRpdmUgPSBmYWxzZSwgbWluRGlnaXRzID0gMCwgbWF4RGlnaXRzID0gMSkge1xuICAgICAgICAgICAgY29uc3QgcGVyY2VudGFnZSA9IHZhbHVlIC8gb2ZWYWx1ZVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXREZWNpbWFsQXNQZXJjZW50YWdlKHBlcmNlbnRhZ2UsIHNpZ25JZlBvc2l0aXZlLCBtaW5EaWdpdHMsIG1heERpZ2l0cylcbiAgICAgICAgfSxcblxuICAgICAgICBmb3JtYXREZWNpbWFsQXNQZXJjZW50YWdlKHZhbHVlLCBzaWduSWZQb3NpdGl2ZSA9IGZhbHNlLCBtaW5EaWdpdHMgPSAwLCBtYXhEaWdpdHMgPSAxKSB7XG4gICAgICAgICAgICAvL2NvbnN0IGxvY2FsZVN0cmluZ09wdGlvbnMgPSB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogbWluRGlnaXRzLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IG1heERpZ2l0cyB9O1xuICAgICAgICAgICAgLy9sZXQgZm9ybWF0dGVkUGVyY2VudGFnZSA9IHZhbHVlLnRvTG9jYWxlU3RyaW5nKHRoaXMuc2Vzc2lvblN0b3JhZ2UuZ2V0KCdsb2NhbGUnKSwgbG9jYWxlU3RyaW5nT3B0aW9ucykgKyAnJSc7XG4gICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICBzdHlsZTogXCJwZXJjZW50XCIsXG4gICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBtaW5EaWdpdHMsXG4gICAgICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBtYXhEaWdpdHMsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzaWduSWZQb3NpdGl2ZSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuc2lnbkRpc3BsYXkgPSBcImFsd2F5c1wiXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIG9wdGlvbnMpXG5cbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKVxuICAgICAgICB9LFxuXG4gICAgICAgIGZvcm1hdFZhdFBlcmNlbnQodmF0UGVyY2VudCwgbWluRGlnaXRzID0gMCwgbWF4RGlnaXRzID0gMikge1xuICAgICAgICAgICAgY29uc3QgbnVtZXJpY1ZhdFBlcmNlbnQgPSBOdW1iZXIodmF0UGVyY2VudClcblxuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobnVtZXJpY1ZhdFBlcmNlbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCJcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRXhwZWN0cyBWQVQgcGVyY2VudGFnZSBwb2ludHMgd2hlcmUgMjUgbWVhbnMgMjUlLlxuICAgICAgICAgICAgY29uc3QgZGVjaW1hbFZhbHVlID0gbnVtZXJpY1ZhdFBlcmNlbnQgLyAxMDBcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0RGVjaW1hbEFzUGVyY2VudGFnZShkZWNpbWFsVmFsdWUsIGZhbHNlLCBtaW5EaWdpdHMsIG1heERpZ2l0cylcbiAgICAgICAgfSxcblxuICAgICAgICBmb3JtYXRQZXJjZW50YWdlRGlzY291bnQoZGlzY291bnRQZXJNaWxsZSwgbWluRGlnaXRzID0gMCwgbWF4RGlnaXRzID0gMSkge1xuICAgICAgICAgICAgaWYgKGRpc2NvdW50UGVyTWlsbGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIlwiXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG51bWVyaWNEaXNjb3VudCA9IE51bWJlcihkaXNjb3VudFBlck1pbGxlKVxuXG4gICAgICAgICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1lcmljRGlzY291bnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCJcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRXhwZWN0cyBwZXItbWlsbGUgd2hlcmUgMjAwIG1lYW5zIDIwJS5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdERlY2ltYWxBc1BlcmNlbnRhZ2UobnVtZXJpY0Rpc2NvdW50IC8gMTAwMCwgZmFsc2UsIG1pbkRpZ2l0cywgbWF4RGlnaXRzKVxuICAgICAgICB9LFxuXG4gICAgICAgIGdldEN1c3RvbWVyVHlwZUljb25DbGFzcyh0eXBlU3RyaW5nKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGVTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwiYnVzaW5lc3NcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiYmktYnVpbGRpbmdzXCJcbiAgICAgICAgICAgICAgICBjYXNlIFwicHJpdmF0ZVwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJ
2iaS1wZXJzb25cIlxuICAgICAgICAgICAgICAgIGNhc2UgXCJwdWJsaWNcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiYmktYmFua1wiXG4gICAgICAgICAgICAgICAgY2FzZSBcImVtcGxveWVlXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcImJpLWZpbGUtcGVyc29uXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBnZXRDb21wYW55TmFtZVRyYW5zbGF0aW9uRnJvbVR5cGUoY3VzdG9tZXJUeXBlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGN1c3RvbWVyVHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJidXNpbmVzc1wiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kdChcImFkZHJlc3Nlcy5jb21wYW55X25hbWVcIilcbiAgICAgICAgICAgICAgICBjYXNlIFwicHVibGljXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiR0KFwiYWRtaW4uY3VzdG9tZXJzLmF1dGhvcml0eV9zbGFzaF9vcmdhbmlzYXRpb25cIilcbiAgICAgICAgICAgICAgICBjYXNlIFwiZW1wbG95ZWVcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHQoXCJhZG1pbi5jdXN0b21lcnMudHlwZS5lbXBsb3llZVwiKVxuICAgICAgICAgICAgICAgIGNhc2UgXCJwcml2YXRlXCI6XG4gICAgICAgICAgICAgICAgY2FzZSBudWxsOlxuICAgICAgICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kdChcImFkbWluLmN1c3RvbWVycy5jb21wYW55X3NsYXNoX29yZ2FuaXNhdGlvblwiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGZvcm1hdEFjY291bnQoYWNjb3VudCkge1xuICAgICAgICAgICAgcmV0dXJuIGAke2FjY291bnQuYWNjb3VudF9udW1iZXJ9ICR7YWNjb3VudC5uYW1lfWBcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRQcmljZVByb2ZpbGVJZGVudGlmaWVyKHByaWNlUHJvZmlsZSkge1xuICAgICAgICAgICAgaWYgKHByaWNlUHJvZmlsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmljZVByb2ZpbGUubmFtZSA9PT0gbnVsbCA/IHRoaXMuJHQoXCJnZW5lcmFsLmRlZmF1bHRcIikgOiBwcmljZVByb2ZpbGUubmFtZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy4kdChcImFkbWluLnByb2R1Y3RzLm5vX2F2YWlsYWJpbGl0eVwiKVxuICAgICAgICB9LFxuXG4gICAgICAgIGdldENvbXBhbnlOYW1lKGNvbXBhbnksIHdpdGhJZEFuZEFkbWluUGFuZWxJZGVudGlmaWVyID0gZmFsc2UsIHdpdGhUeXBlID0gZmFsc2UpIHtcbiAgICAgICAgICAgIGxldCBuYW1lU3RyaW5nID0gY29tcGFueS5kaXNwbGF5X25hbWUgPz8gY29tcGFueS52YXRfZW50aXR5Py5uYW1lXG5cbiAgICAgICAgICAgIGlmICh3aXRoSWRBbmRBZG1pblBhbmVsSWRlbnRpZmllcikge1xuICAgICAgICAgICAgICAgIGlmIChjb21wYW55LmFkbWluX3BhbmVsX2lkZW50aWZpZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZVN0cmluZyA9IGBbJHtjb21wYW55LmFkbWluX3BhbmVsX2lkZW50aWZpZXJ9XSAke25hbWVTdHJpbmd9YFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG5hbWVTdHJpbmcgPSBgJHtjb21wYW55LmlkfTogJHtuYW1lU3RyaW5nfWBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHdpdGhUeXBlKSB7XG4gICAgICAgICAgICAgICAgbmFtZVN0cmluZyA9IGAke25hbWVTdHJpbmd9ICgke3RoaXMuJHQoXCJzdXBlcmFkbWluLmNvbXBhbmllcy50eXBlcy5cIiArIGNvbXBhbnkudHlwZS5uYW1lKX0pYFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmFtZVN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGdldEdpZnRDYXJkVHlwZUJlaGF2aW91ckljb24oZ2lmdENhcmRUeXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2lmdENhcmRUeXBlLmJlaGF2aW91ciA9PT0gXCJ2YWx1ZS1iYXNlZFwiID8gXCJiaS1jYXNoXCIgOiBcImJpLWN1cC1zdHJhd1wiXG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gdGltZVN0cmluZyBzaG91bGQgYmUgYW4gVVRDIHRpbWUgZnJvbSB0aGUgc2VydmVyLiBJIGtub3cgdGhpcyBkb2Vzbid0IGZvcm1hdCBhbnl0aGluZywgYnV0IEkgbmVlZCBpdCBpblxuICAgICAgICAvLyBzZXZlcmFsIHBsYWNlcywgc28gSSdsbCBqdXN0IGxlYXZlIGl0IGhlcmUgZm9yIG5vd1xuICAgICAgICB0b0NvbXBhbnlUaW1lKHRpbWVTdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0b1pvbmVkVGltZShuZXcgRGF0ZSh0aW1lU3RyaW5nKSwgdGhpcy5nZXRUaW1lem9uZSgpKVxuICAgICAgICB9LFxuXG4gICAgICAgIGdldEFtb3VudEZvcm1hdHRlcihmb3JjZURlY2ltYWxzID0gdHJ1ZSwgY3VycmVuY3lEaXNwbGF5ID0gXCJjb2RlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiAodmFsdWUpID0+IHRoaXMuZm9ybWF0UHJpY2UodmFsdWUsIGN1cnJlbmN5RGlzcGxheSwgZmFsc2UsIGZvcmNlRGVjaW1hbHMgPyAyIDogMClcbiAgICAgICAgfSxcblxuICAgICAgICAvKiB0b1NuYWtlQ2FzZShzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxXKy9nLCBcIiBcIilcbiAgICAgICAgICAgICAgICAuc3BsaXQoLyB8XFxCKD89W0EtWl0pLylcbiAgICAgICAgICAgICAgICAubWFwKHdvcmQgPT4gd29yZC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICAgIC5qb2luKCdfJyk7XG4gICAgICAgIH0sICovXG4gICAgfSxcbn1cbiJdLCJuYW1lcyI6WyJyZW5kZXIiLCJfdm0iLCJ0aGlzIiwiX2MiLCJfc2VsZiIsImNsYXNzIiwiZXh0cmFCdXR0b25DbGFzc2VzIiwidW5kZWZpbmVkIiwiYnNDb2xvdXIiLCJzbWFsbCIsImxhcmdlIiwiYXR0cnMiLCJzdWJtaXRGdW5jIiwiZGlzYWJsZWRDb25kaXRpb24iLCJzcGlubmVyQ29uZGl0aW9uIiwiZXh0cmFEaXNhYmxlZENvbmRpdGlvbiIsIm9uIiwiJGV2ZW50IiwiJGVtaXQiLCJic0ljb24iLCJzdGF0aWNDbGFzcyIsImJ1dHRvblRleHQiLCJkb21Qcm9wcyIsIl9zIiwiX2UiLCJhZGRLZXlJY29uIiwic3RhdGljUmVuZGVyRm5zIiwibmFtZSIsInByb3BzIiwidHlwZSIsIlN0cmluZyIsInJlcXVpcmVkIiwiZGVmYXVsdCIsIkJvb2xlYW4iLCJjb21wb25lbnQiLCJfdiIsIiR0IiwielJlcG9ydERhdGEiLCJwYXJhbXMiLCJ1dWlkIiwiY2xvc2VkIiwidHJhbnNmZXJzTG9hZGVkIiwiX2wiLCJpbnRlZ3JhdGlvblRyYW5zZmVycyIsImludGVncmF0aW9uRGF0YSIsImtleSIsImludGVncmF0aW9uIiwiZXh0ZXJuYWxfc3lzdGVtIiwiZm9ybWF0dGVkX25hbWUiLCJpbnRlZ3JhdGlvbkhhc1N5c3RlbVdpdGhOYW1lIiwidHJhbnNmZXJzIiwidHJhbnNmZXIiLCJmb3JtYXREYXRlVGltZSIsIm
2NyZWF0ZWRfYXQiLCJzdWNjZXNzIiwiZGF0YSIsInBkZl9zdWNjZXNzIiwiZXJyb3JzIiwiT2JqZWN0IiwiZW50cmllcyIsImpvaW4iLCJjb21wb25lbnRzIiwiQWRtaW5TcGlubmVyQnV0dG9uIiwibWl4aW5zIiwiZm9ybWF0dGVyIiwicmV0cnlpbmdaUmVwb3J0VHJhbnNmZXIiLCJtZXRob2RzIiwiZ2V0WlJlcG9ydCIsInJlc3BvbnNlIiwid3N5QVBJIiwiZ2V0IiwiJHJvdXRlIiwidmFsaWRhdGVSZXNwb25zZSIsInpfcmVwb3J0IiwiZ2V0VHJhbnNmZXJzIiwiaW50ZWdyYXRpb25fdHJhbnNmZXJzIiwicmV0cnlaUmVwb3J0VHJhbnNmZXIiLCJpbnRlZ3JhdGlvblV1aWQiLCJyZWdpc3Rlcl91dWlkIiwicXVlcnkiLCJwb3N0IiwiJHN0b3JlIiwiY29tbWl0IiwibWVzc2FnZSIsInN5c3RlbU5hbWUiLCJjcmVhdGVkIiwibW91bnRlZCIsImNvbXB1dGVkIiwibG9jYWxlIiwiZ2V0TG9jYWxlIiwicmVzb2x2ZUZvcm1hdHRlckNvbnRleHQiLCJjdXJyZW50Q29tcG9uZW50IiwiZm9ybWF0dGVyQ29udGV4dCIsIiRwYXJlbnQiLCJnZXR0ZXJzIiwiY29tcGFueSIsImdldFRpbWV6b25lIiwidGltZXpvbmUiLCJmb3JtYXREYXRlVGltZUZyb21EYXRlIiwiZGF0ZSIsIndlZWtkYXlGb3JtYXRPckZhbHNlIiwib3B0aW9ucyIsInllYXIiLCJtb250aCIsImRheSIsImhvdXIiLCJtaW51dGUiLCJzZWNvbmQiLCJ0aW1lWm9uZSIsIndlZWtkYXkiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJkYXRlVGltZSIsIm9taXREYXRlSWZTYW1lRGF0ZSIsIkRhdGUiLCJyZWZlcmVuY2VEYXRlIiwiZ2V0RGF0ZSIsInRvTG9jYWxlVGltZVN0cmluZyIsImZvcm1hdERhdGVUaW1lV2l0aG91dFNlY29uZHMiLCJmb3JtYXREYXRlVGltZVdpdGhZZWFyIiwiZ2V0TW9udGgiLCJnZXRGdWxsWWVhciIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsInBhZFN0YXJ0IiwiZm9ybWF0TGVzc1ByZWNpc2VEYXRlVGltZSIsInRvQ29tcGFueVRpbWUiLCJmb3JtYXREYXRlIiwib3ZlcndyaXRlT3B0aW9ucyIsImFzc2lnbiIsImZvcm1hdERhdGVGdWxsTGVuZ3RoIiwiZm9ybWF0Qm9va2luZ0RhdGUiLCJkYXRlU3RyaW5nIiwiZm9ybWF0VGltZSIsInNlY29uZHMiLCJmb3JtYXRUaW1lS2l0Y2hlbiIsImdldEN1cnJlbmN5IiwiY3VycmVuY3kiLCJmb3JtYXRQcmljZSIsImFtb3VudCIsImN1cnJlbmN5RGlzcGxheSIsInBsdXNTaWduRm9yUG9zaXRpdmVBbW91bnRzIiwibWluaW11bUZyYWN0aW9uRGlnaXRzIiwicHJlZml4IiwibWF4aW11bUZyYWN0aW9uRGlnaXRzIiwic3R5bGUiLCJ2YWx1ZSIsIk1hdGgiLCJhYnMiLCJ0b0xvY2FsZVN0cmluZyIsImNhcGl0YWxpc2VGaXJzdExldHRlciIsInN0ciIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJ1bml0QWJicnYiLCJsb25nRm9ybSIsInRyYW5zbGF0ZVBjcyIsImFiYnJldmlhdGlvbnMiLCJncmFtIiwia2lsb2dyYW0iLCJjZW50aW1ldGVyIiwibWV0ZXIiLCJjZW50aWxpdGVyIiwibGl0ZXIiLCJkZWNhZ3JhbSIsIm51bGwiLCJhYmJydiIsImNhcGl0YWxpc2VBbmRDb21tYVNlcGFyYXRlV2Vla2RheXMiLCJ3ZWVrZGF5cyIsImFsbERheXNFeGNlcHRUaHJlc2hvbGQiLCJsZW5ndGgiLCJleGNlcHQiLCJmaWx0ZXIiLCJkIiwiaW5jbHVkZXMiLCJtYXAiLCJ3IiwiaW5kZXgiLCJyZXNvdXJjZUVkaXRDcmVhdGVIZWFkZXIiLCJpc0VkaXRpbmciLCJyZXNvdXJjZSIsInNraXBIdG1sSXRhbGljcyIsInRleHQiLCJ0b0xvd2VyQ2FzZSIsIm5hbWVTdHJpbmciLCJyZXNvdXJjZUVkaXRDcmVhdGVTdWJtaXRUZX
2h0Iiwic3VmZml4IiwiJHRlIiwicmVzb3VyY2VEZWxldGVUZXh0IiwiZ2V0QWxsUmVzb3VyY2VOYW1lVGV4dCIsInJlc291cmNlTmFtZSIsInBlbmRpbmdJbnZpdGF0aW9uU3RhdHVzIiwiaW52aXRhdGlvbiIsImFjY2VwdGVkX2F0IiwicmVqZWN0ZWRfYXQiLCJleHBpcmVkIiwiZm9ybWF0UXVhbnRpdHkiLCJxdWFudGl0eSIsInVuaXQiLCJnZXRVbml0U3VmZml4IiwiZm9ybWF0UXVhbnRpdHlPZk9yZGVyTGluZSIsIm9yZGVyTGluZSIsInF1YW50aXR5UHJvcGVydHkiLCJzZWxsYWJsZSIsIm9yZGVyTGluZU9yaWdpbmFsVG90YWwiLCJmb3JtYXR0ZWQiLCJvcmlnaW5hbFRvdGFsIiwicHJpY2UiLCJvcmRlckxpbmVDdXJyZW50VG90YWwiLCJjdXJyZW50VG90YWwiLCJsaW5lRGlzY291bnRQZXJjZW50YWdlIiwibGluZV9kaXNjb3VudCIsInBlcmNlbnRhZ2UiLCJyb3VuZCIsIm5vVHlwZSIsImdldE5hbWVPZldlZWtkYXlGcm9tSW50ZWdlciIsIm51bWJlciIsImxvd2VyQ2FzZSIsImZvcm1hdFByb2R1Y3RGb3JEcm9wZG93biIsInAiLCJwbHUiLCJhZGRMaW5rU3ltYm9sSWZTaGFyZWQiLCJtb2RlbFdpdGhDb21wYW55RGF0YSIsImZvcm1hdENhc2hpZXJGdWxsTmFtZSIsImNhc2hpZXIiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwiZm9ybWF0UGVyY2VudGFnZSIsIm9mVmFsdWUiLCJzaWduSWZQb3NpdGl2ZSIsIm1pbkRpZ2l0cyIsIm1heERpZ2l0cyIsImZvcm1hdERlY2ltYWxBc1BlcmNlbnRhZ2UiLCJzaWduRGlzcGxheSIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJmb3JtYXQiLCJmb3JtYXRWYXRQZXJjZW50IiwidmF0UGVyY2VudCIsIm51bWVyaWNWYXRQZXJjZW50IiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJkZWNpbWFsVmFsdWUiLCJmb3JtYXRQZXJjZW50YWdlRGlzY291bnQiLCJkaXNjb3VudFBlck1pbGxlIiwibnVtZXJpY0Rpc2NvdW50IiwiZ2V0Q3VzdG9tZXJUeXBlSWNvbkNsYXNzIiwidHlwZVN0cmluZyIsImdldENvbXBhbnlOYW1lVHJhbnNsYXRpb25Gcm9tVHlwZSIsImN1c3RvbWVyVHlwZSIsImZvcm1hdEFjY291bnQiLCJhY2NvdW50IiwiYWNjb3VudF9udW1iZXIiLCJnZXRQcmljZVByb2ZpbGVJZGVudGlmaWVyIiwicHJpY2VQcm9maWxlIiwiZ2V0Q29tcGFueU5hbWUiLCJ3aXRoSWRBbmRBZG1pblBhbmVsSWRlbnRpZmllciIsIndpdGhUeXBlIiwiZGlzcGxheV9uYW1lIiwidmF0X2VudGl0eSIsImFkbWluX3BhbmVsX2lkZW50aWZpZXIiLCJpZCIsImdldEdpZnRDYXJkVHlwZUJlaGF2aW91ckljb24iLCJnaWZ0Q2FyZFR5cGUiLCJiZWhhdmlvdXIiLCJ0aW1lU3RyaW5nIiwidG9ab25lZFRpbWUiLCJnZXRBbW91bnRGb3JtYXR0ZXIiLCJmb3JjZURlY2ltYWxzIl0sInNvdXJjZVJvb3QiOiIifQ==

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.