atr-components 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -57,7 +57,7 @@ export declare interface AtrFormOpt {
57
57
  }
58
58
  export declare interface AtrFormDetail {
59
59
  label: string;
60
- type: 'cascader' | 'radio' | 'text' | 'image' | 'select' | 'date' | 'number' | 'telphone' | 'password' | 'checkbox' | 'editor' | 'textarea' | 'dateTime' | 'title' | 'dateRange' | 'selectc' | 'selectIcon';
60
+ type: 'cascader' | 'radio' | 'text' | 'image' | 'select' | 'date' | 'number' | 'telphone' | 'password' | 'checkbox' | 'editor' | 'textarea' | 'dateTime' | 'title' | 'dateRange' | 'selectc' | 'selectIcon' | 'treeSelect';
61
61
  key: string;
62
62
  isHidden?: boolean;
63
63
  defaultValue?: any;
@@ -25,4 +25,4 @@ export var UserAction;
25
25
  UserAction[UserAction["QUERY"] = 3] = "QUERY";
26
26
  UserAction[UserAction["SUPPERADD"] = 4] = "SUPPERADD";
27
27
  })(UserAction || (UserAction = {}));
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRyLWNvbW1vbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvcmUvYmFzZS9hdHItY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLElBQUksRUFBRSxHQUFHO0lBQ1Q7O09BRUc7SUFDSCxPQUFPLEVBQUMsRUFBRTtJQUNWLFVBQVUsRUFBQyxxQkFBcUI7SUFDaEMsV0FBVyxFQUFDLEtBQUs7SUFDakIsUUFBUSxFQUFDLEVBQUU7SUFDWDs7T0FFRztJQUNILFlBQVksRUFBQyxVQUFVO0lBQ3ZCLFVBQVUsRUFBQyxFQUFFO0NBQ2QsQ0FBQztBQUNGLE1BQU0sT0FBTyxXQUFXOztBQUNmLG1CQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFDNUksaUJBQUssR0FBRyxxOUhBQXE5SCxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQW1Dai9ILE1BQU0sQ0FBTixJQUFZLFVBTVg7QUFORCxXQUFZLFVBQVU7SUFDcEIseUNBQUcsQ0FBQTtJQUNILDJDQUFJLENBQUE7SUFDSix5Q0FBRyxDQUFBO0lBQ0gsNkNBQUssQ0FBQTtJQUNMLHFEQUFTLENBQUE7QUFDWCxDQUFDLEVBTlcsVUFBVSxLQUFWLFVBQVUsUUFNckIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYXRyX3N0YXRpY19kYXRhcyA9IHtcclxuICB0ZXN0OiAnMScsXHJcbiAgLyoqXHJcbiAgICogb3Nz5Zyw5Z2A5YmN57yAXHJcbiAgICovXHJcbiAgT1NTX1VSTDonJyxcclxuICBPU1NfUE9MSUNZOid0aGlyZC9vc3MvZ2V0UG9saWN5JyxcclxuICBTVE9SQUdFX1BSRTonRFFfJyxcclxuICBtZW51X3VybDonJyxcclxuICAvKipcclxuICAgKiDnmbvlvZXot6/nlLFcclxuICAgKi9cclxuICBsb2dpbl9yb3V0ZXI6Jy9wL2xvZ2luJyxcclxuICBTRVJWRVJfVVJMOicnLFxyXG59O1xyXG5leHBvcnQgY2xhc3MgY29tbW9uRGF0YXMge1xyXG4gIHN0YXRpYyBsZXR0ZXJzID0gW1wiQVwiLCBcIkJcIiwgXCJDXCIsIFwiRFwiLCBcIkVcIiwgXCJGXCIsIFwiR1wiLCBcIkhcIiwgXCJJXCIsIFwiSlwiLCBcIktcIiwgXCJMXCIsIFwiTVwiLCBcIk5cIiwgXCJPXCIsIFwiUFwiLCBcIlFcIiwgXCJSXCIsIFwiU1wiLCBcIlRcIiwgXCJVXCIsIFwiVlwiLCBcIldcIiwgXCJYXCIsIFwiWVwiLCBcIlpcIl1cclxuICBzdGF0aWMgaWNvbnMgPSAnc3RlcC1iYWNrd2FyZCxzdGVwLWZvcndhcmQsZmFzdC1iYWNrd2FyZCxmYXN0LWZvcndhcmQsc2hyaW5rLGFycm93cy1hbHQsZG93bix1cCxsZWZ0LHJpZ2h0LGNhcmV0LXVwLGNhcmV0LWRvd24sY2FyZXQtbGVmdCxjYXJldC1yaWdodCx1cC1jaXJjbGUsZG93bi1jaXJjbGUsbGVmdC1jaXJjbGUscmlnaHQtY2lyY2xlLGRvdWJsZS1yaWdodCxkb3VibGUtbGVmdCx2ZXJ0aWNhbC1sZWZ0LHZlcnRpY2FsLXJpZ2h0LHZlcnRpY2FsLWFsaWduLXRvcCx2ZXJ0aWNhbC1hbGlnbi1taWRkbGUsdmVydGljYWwtYWxpZ24tYm90dG9tLGZvcndhcmQsYmFja3dhcmQscm9sbGJhY2ssZW50ZXIscmV0d2VldCxzd2FwLHN3YXAtbGVmdCxzd2FwLXJpZ2h0LGFycm93LXVwLGFycm93LWRvd24sYXJyb3ctbGVmdCxhcnJvdy1yaWdodCxwbGF5LWNpcmNsZSx1cC1zcXVhcmUsZG93bi1zcXVhcmUsbGVmdC1zcXVhcmUscmlnaHQtc3F1YXJlLGxvZ2luLGxvZ291dCxtZW51LWZvbGQsbWVudS11bmZvbGQsYm9yZGVyLWJvdHRvbSxib3JkZXItaG9yaXpvbnRhbCxib3JkZXItaW5uZXIsYm9yZGVyLW91dGVyLGJvcmRlci1sZWZ0LGJvcmRlci1yaWdodCxib3JkZXItdG9wLGJvcmRlci12ZXJ0aWNsZSxwaWMtY2VudGVyLHBpYy1sZWZ0LHBpYy1yaWdodCxyYWRpdXMtYm90dG9tbGVmdCxyYWRpdXMtYm90dG9tcmlnaHQscmFkaXVzLXVwbGVmdCxyYWRpdXMtdXByaWdodCxmdWxsc2NyZWVuLGZ1bGxzY3JlZW4tZXhpdCxxdWVzdGlvbixxdWVzdGlvbi1jaXJjbGUscGx1cyxwbHVzLWNpcmNsZSxwYXVzZSxwYXVzZS1jaXJjbGUsbWludXMsbWludXMtY2lyY2xlLHBsdXMtc3F1YXJlLG1pbnVzLXNxdWFyZSxpbmZvLGluZm8tY2lyY2xlLGV4Y2xhbWF0aW9uLGV4Y2xhbWF0aW9uLWNpcmNsZSxjbG9zZSxjbG9zZS1jaXJjbGUsY2xvc2Utc3F1YXJlLGNoZWNrLGNoZWNrLWNpcmNsZSxjaGVjay1zcXVhcmUsY2xvY2stY2lyY2xlLHdhcm5pbmcsaXNzdWVzLWNsb3NlLHN0b3AsZWRpdCxmb3JtLGNvcHksc2Npc3NvcixkZWxldGUsc25pcHBldHMsZGlmZixoaWdobGlnaHQsYWxpZ24tY2VudGVyLGFsaWduLWxlZnQsYWxpZ24tcmlnaHQsYmctY29sb3JzLGJvbGQsaXRhbGljLHVuZGVybGluZSxzdHJpa2V0aHJvdWdoLHJlZG8sdW5kbyx6b29tLWluLHpvb20tb3V0LGZvbnQtY29sb3JzLGZvbnQtc2l6ZSxsaW5lLWhlaWdodCxkYXNoLHNtYWxsLWRhc2gsc29ydC1hc2NlbmRpbmcsc29ydC1kZXNjZW5kaW5nLGRyYWcsb3JkZXJlZC1saXN0LHVub3JkZXJlZC1saXN0LHJhZGl1cy1zZXR0aW5nLGNvbHVtbi13aWR0aCxjb2x1bW4taGVpZ2h0LGFyZWEtY2hhcnQscGllLWNoYXJ0LGJhci1jaGFydCxkb3QtY2hhcnQsbGluZS1jaGFydCxyYWRhci1jaGFydCxoZWF0LW1hcCxmYWxsLHJpc2Usc3RvY2ssYm94LXBsb3QsZnVuZCxzbGlkZXJzLGFuZHJvaWQsYXBwbGUsd2luZG93cyxpZSxjaHJvbWUsZ2l0aHViLGFsaXdhbmd3YW5nLGRpbmdkaW5nLHdlaWJvLXNxdWFyZSx3ZWliby1jaXJjbGUsdGFvYmFvLWNpcmNsZSxodG1sNSx3ZWlibyx0d2l0dGVyLHdlY2hhdCx5b3V0dWJlLGFsaXBheS1jaXJjbGUsdGFvYmFvLHNreXBlLHFxLG1lZGl1bS13b3JrbWFyayxnaXRsYWIsbWVkaXVtLGxpbmtlZGluLGdvb2dsZS1wbHVzLGRyb3Bib3gsZmFjZWJvb2ssY29kZXBlbixjb2RlLXNhbmRib3gsYW1hem9uLGdvb2dsZSxjb2RlcGVuLWNpcmNsZSxhbGlwYXksYW50LWRlc2lnbixhbnQtY2xvdWQsYWxpeXVuLHpoaWh1LHNsYWNrLHNsYWNrLXNxdWFyZSxiZWhhbmNlLGJlaGFuY2Utc3F1YXJlLGRyaWJiYmxlLGRyaWJiYmxlLXNxdWFyZSxpbnN0YWdyYW0seXVxdWUsYWxpYmFiYSx5YWhvbyxyZWRkaXQsc2tldGNoLGFsZXJ0LGFpbSxhY2NvdW50LWJvb2ssYXBhcnRtZW50LGFwaSxhcHBzdG9yZSxhdWRpby1tdXRlZCxhdWRpdCxiYW5rLGJhcmNvZGUsYmFycyxibG9jayxib29rLGJlbGwsYXBwc3RvcmUtYWRkLGF1ZGlvLGJvcmRlcixib3JkZXJsZXNzLXRhYmxlLGJ1ZyxicmFuY2hlcyxjYW1lcmEsY2FsY3VsYXRvcixjYWxlbmRhcixidWlsZCxjYXJyeS1vdXQsYnVsYixjYXIsY2xlYXIsY2ksY2xvdWQtZG93bmxvYWQsY2xvdWQsY2xvdWQtc3luYyxjbG91ZC1zZXJ2ZXIsY2xvdWQtdXBsb2FkLGNvZGUsY29mZmVlLGNvbXByZXNzLGNvbXBhc3MsY29tbWVudCxjaS1jaXJjbGUsY29udGFpbmVyLGNvbnRyb2wsY29weXJpZ2h0LGNyZWRpdC1jYXJkLGNsdXN0ZXIsY3VzdG9tZXItc2VydmljZSxjb250YWN0cyxjb25zb2xlLXNxbCxkYXNoYm9hcmQsZGF0YWJhc2UsY29weXJpZ2h0LWNpcmNsZSxkZWxldGUtY29sdW1uLGRlc2t0b3AsZGVwbG95bWVudC11bml0LGRlbGl2ZXJlZC1wcm9jZWR1cmUsZGlzY29ubmVjdCxkaW5ndGFsayxkb2xsYXItY2lyY2xlLGRpc2xpa2UsZGVsZXRlLXJvdyxkb2xsYXIsY3Jvd24sZG93bmxvYWQsZWxsaXBzaXMsZW52aXJvbm1lbnQsZXVyby1jaXJjbGUsZXhjZXB0aW9uLGV4cGFuZC1hbHQsZXVybyxleHBlcmltZW50LGV4cG9ydCxleHBhbmQsZXllLWludmlzaWJsZSxleWUsZmlsZS1hZGQsZmllbGQtc3RyaW5nLGZpbGUtZXhjbGFtYXRpb24sZmlsZS1kb25lLGZpZWxkLXRpbWUsZmlsZS1leGNlbCxmaWVsZC1iaW5hcnksZmlsZS1naWYsZmlsZS1pbWFnZSxmaWxlLGZpbGUtbWFya2Rvd24sZmlsZS1wcHQsZmlsZS1wZGYsZmllbGQtbnVtYmVyLGZpbGUtc2VhcmNoLGZpbGUtc3luYyxmaWxlLWpwZyxmaWxlLXRleHQsZmlsdGVyLGZpbGUtemlwLGZsYWcsZm9sZGVyLWFkZCxmaWxlLXVua25vd24sZm9sZGVyLW9wZW4sZmlyZSxmaWxlLXByb3RlY3QsZm9sZGVyLXZpZXcsZm9sZGVyLGZvcmssZm9ybWF0LXBhaW50ZXIsZnJvd24sZnVuZC1wcm9qZWN0aW9uLXNjcmVlbixnaWZ0LGdhdGV3YXksZnVuZC12aWV3LGdpZixmdW5uZWwtcGxvdCxnb2xkLGdsb2JhbCxncm91cCxoZGQsZnVuY3Rpb24saGlzdG9yeSxmaWxlLXdvcmQsaG9tZSxpZGNhcmQsaG91cmdsYXNzLGhlYXJ0LGluc2VydC1yb3ctYmVsb3csaW1wb3J0LGluc2VydC1yb3ctbGVmdCxpbnNlcnQtcm93LWFib3ZlLGluc2VydC1yb3ctcmlnaHQsa2V5LGluYm94LGluc3VyYW5jZSxsYXB0b3AsbGlrZSxsaW5lLGxpbmssbG9hZGluZy0zLXF1YXJ0ZXJzLGxvYWRpbmcsbG9jayxtYW4sbWFpbCxtYWMtY29tbWFuZCxtZWRpY2luZS1ib3gsbGF5b3V0LG1laCxpbnRlcmFjdGlvbixtZXNzYWdlLG1lbnUsbWVyZ2UtY2VsbHMsbW9iaWxlLG1vbmV5LWNvbGxlY3Qsbm9kZS1pbmRleCxtb25pdG9yLG5vZGUtZXhwYW5kLG1vcmUsbnVtYmVyLG5vdGlmaWNhdGlvbixvbmUtdG8tb25lLHBlcmNlbnRhZ2UscGhvbmUscGFwZXItY2xpcCxwYXJ0aXRpb24scGljdHVyZSxub2RlLWNvbGxhcHNlLHBsYXktc3F1YXJlLHBheS1jaXJjbGUscG91bmQscHJvZmlsZSxwcm9qZWN0LHByb3BlcnR5LXNhZmV0eSxwb3dlcm9mZixwdXNocGluLHFyY29kZSxwcmludGVyLHBvdW5kLWNpcmNsZSxwdWxsLXJlcXVlc3QscmVzdCxyZWFkLHJlbG9hZCxyZWNvbmNpbGlhdGlvbixyb2JvdCxyb2NrZXQscm90YXRlLXJpZ2h0LHNhZmV0eS1jZXJ0aWZpY2F0ZSxyZWQtZW52ZWxvcGUscm90YXRlLWxlZnQsc2F2ZSxzYWZldHksc2VhcmNoLHNlY3VyaXR5LXNjYW4sc2NhbixzZW5kLHNldHRpbmcsc2VsZWN0LHNoYWtlLHNob3BwaW5nLWNhcnQsc2lzdGVybm9kZSxzaG9wLHNob3BwaW5nLHNoYXJlLWFsdCxzY2hlZHVsZSxza2luLHNtaWxlLHNvbHV0aW9uLHNvdW5kLHNwbGl0LWNlbGxzLHN0YXIsc3Vibm9kZSx0YWdzLHRhYmxldCx0YWcsdGFibGUsc3dpdGNoZXIsc3luYyx0ZWFtLHRvb2wsdHJhZGVtYXJrLWNpcmNsZSx0aHVuZGVyYm9sdCx0by10b3AsdHJhbnNsYXRpb24sdHJhZGVtYXJrLHRyb3BoeSx1bmdyb3VwLHVubG9jayx1cGxvYWQsdHJhbnNhY3Rpb24sdXNlci1kZWxldGUsdXNiLHVzZXItYWRkLHVzZXJncm91cC1kZWxldGUsdmlkZW8tY2FtZXJhLWFkZCx2ZXJpZmllZCx1c2VyZ3JvdXAtYWRkLHVzZXIsdXNlci1zd2l0Y2gsdmlkZW8tY2FtZXJhLHdpZmksd2FsbGV0LHdoYXRzLWFwcCx3b21hbixhcHBzdG9yZScuc3BsaXQoJywnKVxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UganNvbiBleHRlbmRzIE9iamVjdCB7XHJcbiAgW2tleTogc3RyaW5nXTogYW55XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBTZXJ2ZXJQYWdpbmF0aW9uU3RhbmRhcmQge1xyXG4gIGN1cnJlbnRQYWdlOiBudW1iZXI7XHJcbiAgc2hvd0NvdW50OiBudW1iZXI7XHJcbiAgdG90YWxSZXN1bHQ6IG51bWJlcjtcclxuICB0b3RhbFBhZ2U/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIdHRwUmVzcG9uc2VEYXRhU3RhbmRhcmQge1xyXG4gIHN0YXRlOiBudW1iZXI7IC8vIOS4ujHmiY3mmK/miJDlip9cclxuICBkYXRhOiBqc29uIHwgW3t9XSB8IG9iamVjdCB8IHN0cmluZyB8IGFueTsgLy/msqHmnInlgLwgZGF0YTogJydcclxuICBtZXNzOiBzdHJpbmc7IC8v6L+U5Zue55qE5raI5oGvXHJcbiAgcGFnZT86IFNlcnZlclBhZ2luYXRpb25TdGFuZGFyZDtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIdHRwUnNlcG9uc2VUcmFuc2Zvcm1DZWxsIHtcclxuICBba2V5OiBzdHJpbmddOiBqc29uXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIdHRwT3B0aW9ucyB7XHJcbiAgaGVhZGVycz86IHt9LFxyXG4gIGlzSnNvbkVuY29kZT86IGJvb2xlYW5cclxuICBpc1VybEVuY29kZT86IGJvb2xlYW5cclxuICBpc0F1dG9TaG93TWVzc2FnZT86IGJvb2xlYW5cclxuICBpc1dpdGhDcmVkZW50aWFscz86IGJvb2xlYW5cclxuICBpc0NvbW1vbkh0dHBIZWFkZXI/OiBib29sZWFuXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFVzZXJBY3Rpb24ge1xyXG4gIEFERCxcclxuICBFRElULFxyXG4gIERFTCxcclxuICBRVUVSWSxcclxuICBTVVBQRVJBRERcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEF0ckZvcm1PcHQge1xyXG4gIHR5cGU6ICdhZGQnIHwgJ2VkaXQnIHwgJ3ZpZXcnLFxyXG4gIGxheW91dD86IFwiZnVsbFwiIHwgJzFsMmMnIHwgJzFsMWMnLFxyXG4gIGl0ZW1zOiBBdHJGb3JtRGV0YWlsW10sLy/ooajljZXpobnnm65cclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEF0ckZvcm1EZXRhaWwge1xyXG4gIGxhYmVsOiBzdHJpbmcsXHJcbiAgdHlwZTogJ2Nhc2NhZGVyJyB8ICdyYWRpbycgfCAndGV4dCcgfCAnaW1hZ2UnIHwgJ3NlbGVjdCcgfCAnZGF0ZScgfCAnbnVtYmVyJyB8ICd0ZWxwaG9uZScgfCAncGFzc3dvcmQnIHwgJ2NoZWNrYm94J1xyXG4gICAgfCAnZWRpdG9yJyB8ICd0ZXh0YXJlYScgfCAnZGF0ZVRpbWUnIHwgJ3RpdGxlJyB8ICdkYXRlUmFuZ2UnIHwgJ3NlbGVjdGMnIHwgJ3NlbGVjdEljb24nLFxyXG4gIGtleTogc3RyaW5nLFxyXG4gIGlzSGlkZGVuPzogYm9vbGVhbixcclxuICBkZWZhdWx0VmFsdWU/OiBhbnksXHJcbiAgdmFsdWU/OiBhbnksLy/nvJbovpHkuIvljp/lp4vmlbDlgLxcclxuICBkaWN0Q29kZT86IHN0cmluZywvL3NlbGVjdCDmqKHlvI/kuIvphY3nva5cclxuICBzcGFuPzogbnVtYmVyLC8v5pi+56S65a695bqmXHJcbiAgdmFsaWRhdG9ycz86IEF0ckZvcm1WYWxpZFtdLC8v6aqM6K+B5p2h5Lu2XHJcbiAgaXNSZXF1aXJlZD86IGJvb2xlYW4gfCBzdHJpbmcsLy/pmpDmgKfmnaHku7Yg5peg6ZyA5aGr5YaZLCBzdHJpbmfnsbvlnovmoLzlvI/lkIxvcGVyYXRvclxyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nLFxyXG4gIGltYWdlT3B0cz86IEltYWdlT3B0cyxcclxuICBlZGl0Q29udGVudD86IHN0cmluZyxcclxuICBoZWlnaHQ/OiBudW1iZXIsLy9lZGl0b3LmnInmlYhcclxuICBkaXNhYmxlPzogYm9vbGVhbixcclxuICBsc3Bhbj86IG51bWJlcixcclxuICBjc3Bhbj86IG51bWJlcixcclxuICByb3dzPzogbnVtYmVyLC8vdGV4dGFyZWEg5pi+56S66KGM5pWwXHJcbiAgb3BlcmF0b3I/OiBzdHJpbmcsLy/mmL7npLrmk43kvZznrKYg5qC85byPIOWmgjpzdGF0dXN8ZXF8MFxyXG4gIGJ1dHRvbj86IGZvcm1CdXR0b24sXHJcbiAgcmVhZG9ubHk/OiBib29sZWFuLFxyXG4gIGRhdGVGb3JtYXQ/OiBzdHJpbmcsXHJcbiAgZGljdExpc3Q/OiBDdXNEaWN0W10sXHJcbiAgc2VsZWN0VXJsPzogeyB1cmw6IHN0cmluZywgY29udmVydD86IHN0cmluZywgdHlwZT86ICdnZXQnIHwgJ3Bvc3QnLCBob3N0PzogJ29zcycgfCAnc2VydmUnLCBpc011bHRpcGxlPzogYm9vbGVhbiB9LFxyXG4gIHRyZWVMaXN0PzogeyBrZXk6IHN0cmluZywgdGl0bGU6IHN0cmluZyB9W10sXHJcbiAgZW5kcz86IHN0cmluZyxcclxuICBwcm9wb3NhbD86IHN0cmluZyxcclxuICB0ZW1wPzogYW55LFxyXG4gIG5vdE51bGw/OiBib29sZWFuXHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQXRyRm9ybVZhbGlkIHtcclxuICB0eXBlOiAncmVxdWlyZWQnIHwgJ2VtYWlsJyB8ICd0ZWxwaG9uZScgfCAnbWF4bGVuZ3RoJyB8ICdtaW5sZW5ndGgnIHwgJ3BhdHRlcm4nIHwgJ29wZXJhdG9yJyxcclxuICBlcnJvckxhYmVsOiBzdHJpbmcsXHJcbiAgbWF4bGVuZ3RoPzogbnVtYmVyLFxyXG4gIG1pbmxlbmd0aD86IG51bWJlcixcclxuICBwYXR0ZXJuVmFsdWU/OiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIGZvcm1CdXR0b24ge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICBpc1Nob3c6IGJvb2xlYW4sXHJcbiAgY29kZTogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBjb2xvck9wZXJhdG9yIHtcclxuICBjb2xvcjogc3RyaW5nLFxyXG4gIG9wZXJhdG9yOiBzdHJpbmcsLy/op4TliJlcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEF0clF1ZXlyT3B0IHtcclxuICBhY3Rpb25zPzogVGFibGVBY3Rpb25bXSxcclxuICBpc0luZGV4PzogYm9vbGVhbiwvL+aYr+WQpuaYvuekuuW6j+WPtyxcclxuICBjb2xvcj86IGNvbG9yT3BlcmF0b3IsLy/popzoibJcclxuICBjaGVja0JveD86IHtcclxuICAgIGlzU2hvd0NoZWNrYm94PzogYm9vbGVhbixcclxuICAgIGlzUmFkaW8/OiBib29sZWFuLFxyXG4gICAgaXNGb3JiaWQ/OiBib29sZWFuLC8vdHJ1ZeaXtuWPquWFgeiuuOeCueWHu+WkmumAieahhumAieaLqVxyXG4gIH0sXHJcbiAgLy8gaXNTaG93Q2hlY2tib3g/OiBib29sZWFuLFxyXG4gIHNob3dOdW0/OiBudW1iZXIsXHJcbiAgdXJsOiBzdHJpbmcsXHJcbiAgc29ydD86IHN0cmluZyxcclxuICBoZWFkZXJzPzogQXRyUXVlcnlIZWFkZXJbXSxcclxuICB0YWJsZXM6IFRhYmxlW10sXHJcbiAgaXNBdXRvUXVlcnk/OiBib29sZWFuLC8vdHJ1ZeaXtuWAmem7mOiupOinpuWPkeafpeivolxyXG4gIGRlZmF1bHRQYXJhbXM/OiBqc29uLFxyXG4gIGlzSGlkZVF1ZXJ5PzogYm9vbGVhblxyXG4gIC8vIGlzUmFkaW8/OmJvb2xlYW4sXHJcbiAgLy8gaXNGb3JiaWQ/OmJvb2xlYW4sLy90cnVl5pe25Y+q5YWB6K6454K55Ye75aSa6YCJ5qGG6YCJ5oupXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBUYWJsZSB7XHJcbiAgbmFtZTogc3RyaW5nLC8v6KGo5aS05ZCN56ewXHJcbiAga2V5Pzogc3RyaW5nLC8v5a6e6ZmF5pWw5o2u5a2X5q61XHJcbiAgZGVmYXVsdFZhbD86IGFueSxcclxuICBzb3J0S2V5Pzogc3RyaW5nLC8v5piv5ZCm5o6S5bqPXHJcbiAgc29ydGFibGU/OiBib29sZWFuLFxyXG4gIHR5cGU6ICd0ZXh0Y29sb3InIHwgJ2ZpeGVkVGV4dCcgfCAndGV4dCcgfCAnbGluaycgfCAnYWN0aW9uJyB8ICdpbWFnZScgfCAnZGF0ZScgfCAnZGF0ZVRpbWUnIHwgJ3NEYXRlVGltZScgfCAnZGljdCcsLy/nsbvlnovvvJog5paH5a2X44CB6ZO+5o6l44CB5pON5L2cXHJcbiAgZGljdENvZGU/OiBzdHJpbmcsXHJcbiAgaXNTaG93PzogYm9vbGVhbixcclxuICB3aWR0aD86IHN0cmluZywvLzE1MHB4XHJcbiAgYWN0aW9ucz86IFRhYmxlQWN0aW9uW10sXHJcbiAgaXNSb3dTcGFuPzogYm9vbGVhbixcclxuICBpc1JpZ2h0PzogYm9vbGVhblxyXG4gIGlzTGVmdD86IGJvb2xlYW4sXHJcbiAgY29sb3I/OiBjb2xvck9wZXJhdG9yLC8v6aKc6ImyXHJcbiAgY29sb3JTaG93Pzogc3RyaW5nLFxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQXRyUXVlcnlIZWFkZXIge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICB0eXBlOiAnY2FzY2FkZXInIHwgJ3RleHQnIHwgJ251bWJlcicgfCAnY2hlY2tib3gnIHwgJ3NlbGVjdCcgfCAnZGF0ZXBpY2tlcicgfCAnc2VsZWN0Q3VzJyB8ICdkYXRlUmFuZ2UnIHwgJ3NkYXRlJyB8ICd0cmVlU2VsZWN0JyxcclxuICBrZXk6IHN0cmluZyxcclxuICBpc1Nob3c/OiBib29sZWFuLFxyXG4gIGNvZGU/OiBzdHJpbmcsXHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmcsXHJcbiAgc3Bhbj86IG51bWJlcixcclxuICBkaWN0Q29kZT86IHN0cmluZywvL+Wtl+WFuOe8lueggVxyXG4gIGRpY3RMaXN0PzogQ3VzRGljdFtdLFxyXG4gIGRlZmF1bHRWYWw/OiBhbnkgLy8g6buY6K6k5YC8XHJcbiAgbWF4VGFnQ291bnQ/OiBudW1iZXIsXHJcbiAgbHNwYW4/OiBudW1iZXIsXHJcbiAgY3NwYW4/OiBudW1iZXIsXHJcbiAgZGlzYWJsZUNsZWFyPzogYm9vbGVhbixcclxuICB0cmVlTGlzdD86IHsga2V5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcgfVtdXHJcbiAgLyoqXHJcbiAgICog5qC85byPXHJcbiAgICogY29udmVydDona2V5fGlkLHRpdGxlfHJlYWxOYW1lJyh0cmVlU2VsZWN0KVxyXG4gICAqICAgIHZhbHVlfGlkLGxhYmVsfG5hbWUoc2VsZWN0Q3VzKVxyXG4gICAqL1xyXG4gIHNlbGVjdFVybD86IHsgdXJsOiBzdHJpbmcsIGNvbnZlcnQ6IHN0cmluZywgaXNNdWx0aXBsZT86IGJvb2xlYW4gfSwvL2NvbnZlcnQ6IG5ld0tleXxvbGRLZXksbmV3S2V5fG9sZEtleSjmjqXlj6Pov5Tlm57nmoTlgLwpXHJcbiAgaWNvbj86IHsgaXNTaG93OiBib29sZWFuLCBjb2RlOiBzdHJpbmcsIGljb246IGFueSB9LFxyXG4gIGRhdGVNb2RlPzogJ3dlZWsnIHwgJ21vbnRoJyB8ICd5ZWFyJyxcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFRhYmxlQWN0aW9uIHtcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgY29kZTogc3RyaW5nLFxyXG4gIHVybD86IHN0cmluZyxcclxuICBnVHlwZT86ICdub3JtYWwnIHwgJ3VwbG9hZCcsXHJcbiAgZGF0YT86IGFueSxcclxuICBkYXRhcz86IGFueVtdLFxyXG4gIGljb24/OiBzdHJpbmcsXHJcbiAgbnVtYmVyT2ZDaGVja2VkPzogbnVtYmVyLFxyXG4gIHR5cGU/OiAncm93cycgfCAncm93JyxcclxuICBvcGVyYXRvcj86IHN0cmluZywvL+aYvuekuuaTjeS9nOesplxyXG4gIGJ1dHRvblR5cGU/OiAncHJpbWFyeScgfCAnZGFzaGVkJyB8ICdkYW5nZXInIHwgJ2RlZmF1bHQnIHwgJ2xpbmsnLFxyXG4gIHZhbHVlPzogYW55LFxyXG4gIHdpdGhvdXRSb2xlPzogYm9vbGVhbi8v5LiN6ZyA6KaB5p2D6ZmQ5o6n5Yi2XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBGb3JtQWN0aW9uIHtcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgY29kZTogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBEaWN0IHtcclxuICBpZDogc3RyaW5nLFxyXG4gIHR5cGVOYW1lOiBzdHJpbmcsXHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRGljdEdyb3VwIHtcclxuICBncm91cENvZGU6IHN0cmluZyxcclxuICBkaWN0czogRGljdFtdXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDdXNEaWN0IHtcclxuICBsYWJlbDogc3RyaW5nLFxyXG4gIHZhbHVlOiBzdHJpbmcsXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJbWFnZU9wdHMge1xyXG4gIGxpbWl0PzogbnVtYmVyLFxyXG4gIHVwbG9hZERpcjogc3RyaW5nLFxyXG4gIHJlbW92ZUFjdGlvbj86IHN0cmluZyxcclxuICBpbWFnZUxpc3Q/OiBhbnlbXSxcclxuICBrZXk/OiBzdHJpbmcsXHJcbiAgbGFiZT86IHN0cmluZyxcclxuICBmaWxlTmFtZT86IHN0cmluZyxcclxuICB1cGxvYWRUeXBlPzogJ2RyYWcnIHwgJycsXHJcbiAgbnpGaWxlVHlwZT86IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgZXF1aXBUZXN0RGF0YSB7XHJcbiAgY29kZTogc3RyaW5nXHJcbiAgaXRlbU5hbWU6IHN0cmluZ1xyXG4gIHpob3UxOiBudW1iZXJcclxuICB6aG91MjogbnVtYmVyXHJcbiAgemhvdTM6IG51bWJlclxyXG4gIHpob3U0OiBudW1iZXJcclxuICB6aG91NTogbnVtYmVyXHJcbiAgemhvdTY6IG51bWJlclxyXG4gIGlzV3JvbmcxPzogYm9vbGVhblxyXG4gIGlzV3JvbmcyPzogYm9vbGVhblxyXG4gIGlzV3JvbmczPzogYm9vbGVhblxyXG4gIGlzV3Jvbmc0PzogYm9vbGVhblxyXG4gIGlzV3Jvbmc1PzogYm9vbGVhblxyXG4gIGlzV3Jvbmc2PzogYm9vbGVhblxyXG59XHJcblxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFNlbGVjdEFjdGlvbiB7XHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIGNvZGU6IFwibmdNb2RlbENoYW5nZVwiIHwgJ256T3BlbkNoYW5nZScsXHJcbiAgZGF0YT86IGFueSxcclxuICBrZXk/OiBzdHJpbmcsXHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBNZW51SWNvbiB7XHJcbiAgLyoqIFR5cGUgZm9yIGljb24gKi9cclxuICB0eXBlOiAnY2xhc3MnIHwgJ2ljb24nIHwgJ2ljb25mb250JyB8ICdpbWcnO1xyXG4gIC8qKiBWYWx1ZSBmb3IgdGhlIGljb24sIGNhbiBiZSBzZXQgQ2xhc3MgTmFtZSwgbnotaWNvbiBvZiBgbnpUeXBlYCwgaW1hZ2UgKi9cclxuICB2YWx1ZT86IHN0cmluZztcclxuICAvKiogVHlwZSBvZiB0aGUgYW50IGRlc2lnbiBpY29uLCBkZWZhdWx0OiBgb3V0bGluZWAgKi9cclxuICB0aGVtZT86ICdvdXRsaW5lJyB8ICd0d290b25lJyB8ICdmaWxsJztcclxuICAvKiogUm90YXRlIGljb24gd2l0aCBhbmltYXRpb24sIGRlZmF1bHQ6IGBmYWxzZWAgKi9cclxuICBzcGluPzogYm9vbGVhbjtcclxuICAvKiogT25seSBzdXBwb3J0IHRoZSB0d28tdG9uZSBpY29uLiBTcGVjaWZpYyB0aGUgcHJpbWFyeSBjb2xvciAqL1xyXG4gIHR3b1RvbmVDb2xvcj86IHN0cmluZztcclxuICAvKiogVHlwZSBvZiB0aGUgaWNvbiBmcm9tIGljb25mb250ICovXHJcbiAgaWNvbmZvbnQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVudSB7XHJcbiAgdGV4dD86IHN0cmluZztcclxuICBsaW5rPzogc3RyaW5nO1xyXG4gIHJlYWxMaW5rPzpzdHJpbmc7XHJcbiAgaXNTZWxlY3RlZD86IEJvb2xlYW47XHJcbiAgaXNPcGVuPzogQm9vbGVhbjtcclxuICB0YXJnZXQ/OiAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCc7XHJcbiAgLyoqIEljb24gZm9yIHRoZSBtZW51IGl0ZW0sIG9ubHkgdmFsaWQgZm9yIHRoZSBmaXJzdCBsZXZlbCBtZW51ICovXHJcbiAgaWNvbj86IHN0cmluZyB8IE1lbnVJY29uIHwgbnVsbDtcclxuICAvKiogQmFkZ2V0IGZvciB0aGUgbWVudSBpdGVtIHdoZW4gYGdyb3VwYCBpcyBgdHJ1ZWAgKi9cclxuICBvcGVyYXRpb24/OiBzdHJpbmc7XHJcbiAgLyoqIFdoZXRoZXIgc2hvcnRjdXQgbWVudSBpdGVtICovXHJcbiAgc2VxPzogbnVtYmVyO1xyXG4gIGxldmVsPzogbnVtYmVyO1xyXG4gIC8qKiBXaGV0ZXIgc2hvcnRjdXQgbWVudSByb290IG5vZGUgKi9cclxuICBsaW5rVHlwZT86IHN0cmluZztcclxuICAvKiogV2hldGhlciB0byBhbGxvdyByZXVzZSwgbmVlZCB0byBjb29wZXJhdGUgd2l0aCB0aGUgYHJldXNlLXRhYmAgY29tcG9uZW50ICovXHJcbiAgY2hpbGRyZW4/OiBNZW51W107XHJcbiAgaXNWaXNpYmxlPzonMCcgfCcxJ1xyXG59XHJcbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRyLWNvbW1vbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvcmUvYmFzZS9hdHItY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLElBQUksRUFBRSxHQUFHO0lBQ1Q7O09BRUc7SUFDSCxPQUFPLEVBQUMsRUFBRTtJQUNWLFVBQVUsRUFBQyxxQkFBcUI7SUFDaEMsV0FBVyxFQUFDLEtBQUs7SUFDakIsUUFBUSxFQUFDLEVBQUU7SUFDWDs7T0FFRztJQUNILFlBQVksRUFBQyxVQUFVO0lBQ3ZCLFVBQVUsRUFBQyxFQUFFO0NBQ2QsQ0FBQztBQUNGLE1BQU0sT0FBTyxXQUFXOztBQUNmLG1CQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFDNUksaUJBQUssR0FBRyxxOUhBQXE5SCxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQW1Dai9ILE1BQU0sQ0FBTixJQUFZLFVBTVg7QUFORCxXQUFZLFVBQVU7SUFDcEIseUNBQUcsQ0FBQTtJQUNILDJDQUFJLENBQUE7SUFDSix5Q0FBRyxDQUFBO0lBQ0gsNkNBQUssQ0FBQTtJQUNMLHFEQUFTLENBQUE7QUFDWCxDQUFDLEVBTlcsVUFBVSxLQUFWLFVBQVUsUUFNckIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYXRyX3N0YXRpY19kYXRhcyA9IHtcclxuICB0ZXN0OiAnMScsXHJcbiAgLyoqXHJcbiAgICogb3Nz5Zyw5Z2A5YmN57yAXHJcbiAgICovXHJcbiAgT1NTX1VSTDonJyxcclxuICBPU1NfUE9MSUNZOid0aGlyZC9vc3MvZ2V0UG9saWN5JyxcclxuICBTVE9SQUdFX1BSRTonRFFfJyxcclxuICBtZW51X3VybDonJyxcclxuICAvKipcclxuICAgKiDnmbvlvZXot6/nlLFcclxuICAgKi9cclxuICBsb2dpbl9yb3V0ZXI6Jy9wL2xvZ2luJyxcclxuICBTRVJWRVJfVVJMOicnLFxyXG59O1xyXG5leHBvcnQgY2xhc3MgY29tbW9uRGF0YXMge1xyXG4gIHN0YXRpYyBsZXR0ZXJzID0gW1wiQVwiLCBcIkJcIiwgXCJDXCIsIFwiRFwiLCBcIkVcIiwgXCJGXCIsIFwiR1wiLCBcIkhcIiwgXCJJXCIsIFwiSlwiLCBcIktcIiwgXCJMXCIsIFwiTVwiLCBcIk5cIiwgXCJPXCIsIFwiUFwiLCBcIlFcIiwgXCJSXCIsIFwiU1wiLCBcIlRcIiwgXCJVXCIsIFwiVlwiLCBcIldcIiwgXCJYXCIsIFwiWVwiLCBcIlpcIl1cclxuICBzdGF0aWMgaWNvbnMgPSAnc3RlcC1iYWNrd2FyZCxzdGVwLWZvcndhcmQsZmFzdC1iYWNrd2FyZCxmYXN0LWZvcndhcmQsc2hyaW5rLGFycm93cy1hbHQsZG93bix1cCxsZWZ0LHJpZ2h0LGNhcmV0LXVwLGNhcmV0LWRvd24sY2FyZXQtbGVmdCxjYXJldC1yaWdodCx1cC1jaXJjbGUsZG93bi1jaXJjbGUsbGVmdC1jaXJjbGUscmlnaHQtY2lyY2xlLGRvdWJsZS1yaWdodCxkb3VibGUtbGVmdCx2ZXJ0aWNhbC1sZWZ0LHZlcnRpY2FsLXJpZ2h0LHZlcnRpY2FsLWFsaWduLXRvcCx2ZXJ0aWNhbC1hbGlnbi1taWRkbGUsdmVydGljYWwtYWxpZ24tYm90dG9tLGZvcndhcmQsYmFja3dhcmQscm9sbGJhY2ssZW50ZXIscmV0d2VldCxzd2FwLHN3YXAtbGVmdCxzd2FwLXJpZ2h0LGFycm93LXVwLGFycm93LWRvd24sYXJyb3ctbGVmdCxhcnJvdy1yaWdodCxwbGF5LWNpcmNsZSx1cC1zcXVhcmUsZG93bi1zcXVhcmUsbGVmdC1zcXVhcmUscmlnaHQtc3F1YXJlLGxvZ2luLGxvZ291dCxtZW51LWZvbGQsbWVudS11bmZvbGQsYm9yZGVyLWJvdHRvbSxib3JkZXItaG9yaXpvbnRhbCxib3JkZXItaW5uZXIsYm9yZGVyLW91dGVyLGJvcmRlci1sZWZ0LGJvcmRlci1yaWdodCxib3JkZXItdG9wLGJvcmRlci12ZXJ0aWNsZSxwaWMtY2VudGVyLHBpYy1sZWZ0LHBpYy1yaWdodCxyYWRpdXMtYm90dG9tbGVmdCxyYWRpdXMtYm90dG9tcmlnaHQscmFkaXVzLXVwbGVmdCxyYWRpdXMtdXByaWdodCxmdWxsc2NyZWVuLGZ1bGxzY3JlZW4tZXhpdCxxdWVzdGlvbixxdWVzdGlvbi1jaXJjbGUscGx1cyxwbHVzLWNpcmNsZSxwYXVzZSxwYXVzZS1jaXJjbGUsbWludXMsbWludXMtY2lyY2xlLHBsdXMtc3F1YXJlLG1pbnVzLXNxdWFyZSxpbmZvLGluZm8tY2lyY2xlLGV4Y2xhbWF0aW9uLGV4Y2xhbWF0aW9uLWNpcmNsZSxjbG9zZSxjbG9zZS1jaXJjbGUsY2xvc2Utc3F1YXJlLGNoZWNrLGNoZWNrLWNpcmNsZSxjaGVjay1zcXVhcmUsY2xvY2stY2lyY2xlLHdhcm5pbmcsaXNzdWVzLWNsb3NlLHN0b3AsZWRpdCxmb3JtLGNvcHksc2Npc3NvcixkZWxldGUsc25pcHBldHMsZGlmZixoaWdobGlnaHQsYWxpZ24tY2VudGVyLGFsaWduLWxlZnQsYWxpZ24tcmlnaHQsYmctY29sb3JzLGJvbGQsaXRhbGljLHVuZGVybGluZSxzdHJpa2V0aHJvdWdoLHJlZG8sdW5kbyx6b29tLWluLHpvb20tb3V0LGZvbnQtY29sb3JzLGZvbnQtc2l6ZSxsaW5lLWhlaWdodCxkYXNoLHNtYWxsLWRhc2gsc29ydC1hc2NlbmRpbmcsc29ydC1kZXNjZW5kaW5nLGRyYWcsb3JkZXJlZC1saXN0LHVub3JkZXJlZC1saXN0LHJhZGl1cy1zZXR0aW5nLGNvbHVtbi13aWR0aCxjb2x1bW4taGVpZ2h0LGFyZWEtY2hhcnQscGllLWNoYXJ0LGJhci1jaGFydCxkb3QtY2hhcnQsbGluZS1jaGFydCxyYWRhci1jaGFydCxoZWF0LW1hcCxmYWxsLHJpc2Usc3RvY2ssYm94LXBsb3QsZnVuZCxzbGlkZXJzLGFuZHJvaWQsYXBwbGUsd2luZG93cyxpZSxjaHJvbWUsZ2l0aHViLGFsaXdhbmd3YW5nLGRpbmdkaW5nLHdlaWJvLXNxdWFyZSx3ZWliby1jaXJjbGUsdGFvYmFvLWNpcmNsZSxodG1sNSx3ZWlibyx0d2l0dGVyLHdlY2hhdCx5b3V0dWJlLGFsaXBheS1jaXJjbGUsdGFvYmFvLHNreXBlLHFxLG1lZGl1bS13b3JrbWFyayxnaXRsYWIsbWVkaXVtLGxpbmtlZGluLGdvb2dsZS1wbHVzLGRyb3Bib3gsZmFjZWJvb2ssY29kZXBlbixjb2RlLXNhbmRib3gsYW1hem9uLGdvb2dsZSxjb2RlcGVuLWNpcmNsZSxhbGlwYXksYW50LWRlc2lnbixhbnQtY2xvdWQsYWxpeXVuLHpoaWh1LHNsYWNrLHNsYWNrLXNxdWFyZSxiZWhhbmNlLGJlaGFuY2Utc3F1YXJlLGRyaWJiYmxlLGRyaWJiYmxlLXNxdWFyZSxpbnN0YWdyYW0seXVxdWUsYWxpYmFiYSx5YWhvbyxyZWRkaXQsc2tldGNoLGFsZXJ0LGFpbSxhY2NvdW50LWJvb2ssYXBhcnRtZW50LGFwaSxhcHBzdG9yZSxhdWRpby1tdXRlZCxhdWRpdCxiYW5rLGJhcmNvZGUsYmFycyxibG9jayxib29rLGJlbGwsYXBwc3RvcmUtYWRkLGF1ZGlvLGJvcmRlcixib3JkZXJsZXNzLXRhYmxlLGJ1ZyxicmFuY2hlcyxjYW1lcmEsY2FsY3VsYXRvcixjYWxlbmRhcixidWlsZCxjYXJyeS1vdXQsYnVsYixjYXIsY2xlYXIsY2ksY2xvdWQtZG93bmxvYWQsY2xvdWQsY2xvdWQtc3luYyxjbG91ZC1zZXJ2ZXIsY2xvdWQtdXBsb2FkLGNvZGUsY29mZmVlLGNvbXByZXNzLGNvbXBhc3MsY29tbWVudCxjaS1jaXJjbGUsY29udGFpbmVyLGNvbnRyb2wsY29weXJpZ2h0LGNyZWRpdC1jYXJkLGNsdXN0ZXIsY3VzdG9tZXItc2VydmljZSxjb250YWN0cyxjb25zb2xlLXNxbCxkYXNoYm9hcmQsZGF0YWJhc2UsY29weXJpZ2h0LWNpcmNsZSxkZWxldGUtY29sdW1uLGRlc2t0b3AsZGVwbG95bWVudC11bml0LGRlbGl2ZXJlZC1wcm9jZWR1cmUsZGlzY29ubmVjdCxkaW5ndGFsayxkb2xsYXItY2lyY2xlLGRpc2xpa2UsZGVsZXRlLXJvdyxkb2xsYXIsY3Jvd24sZG93bmxvYWQsZWxsaXBzaXMsZW52aXJvbm1lbnQsZXVyby1jaXJjbGUsZXhjZXB0aW9uLGV4cGFuZC1hbHQsZXVybyxleHBlcmltZW50LGV4cG9ydCxleHBhbmQsZXllLWludmlzaWJsZSxleWUsZmlsZS1hZGQsZmllbGQtc3RyaW5nLGZpbGUtZXhjbGFtYXRpb24sZmlsZS1kb25lLGZpZWxkLXRpbWUsZmlsZS1leGNlbCxmaWVsZC1iaW5hcnksZmlsZS1naWYsZmlsZS1pbWFnZSxmaWxlLGZpbGUtbWFya2Rvd24sZmlsZS1wcHQsZmlsZS1wZGYsZmllbGQtbnVtYmVyLGZpbGUtc2VhcmNoLGZpbGUtc3luYyxmaWxlLWpwZyxmaWxlLXRleHQsZmlsdGVyLGZpbGUtemlwLGZsYWcsZm9sZGVyLWFkZCxmaWxlLXVua25vd24sZm9sZGVyLW9wZW4sZmlyZSxmaWxlLXByb3RlY3QsZm9sZGVyLXZpZXcsZm9sZGVyLGZvcmssZm9ybWF0LXBhaW50ZXIsZnJvd24sZnVuZC1wcm9qZWN0aW9uLXNjcmVlbixnaWZ0LGdhdGV3YXksZnVuZC12aWV3LGdpZixmdW5uZWwtcGxvdCxnb2xkLGdsb2JhbCxncm91cCxoZGQsZnVuY3Rpb24saGlzdG9yeSxmaWxlLXdvcmQsaG9tZSxpZGNhcmQsaG91cmdsYXNzLGhlYXJ0LGluc2VydC1yb3ctYmVsb3csaW1wb3J0LGluc2VydC1yb3ctbGVmdCxpbnNlcnQtcm93LWFib3ZlLGluc2VydC1yb3ctcmlnaHQsa2V5LGluYm94LGluc3VyYW5jZSxsYXB0b3AsbGlrZSxsaW5lLGxpbmssbG9hZGluZy0zLXF1YXJ0ZXJzLGxvYWRpbmcsbG9jayxtYW4sbWFpbCxtYWMtY29tbWFuZCxtZWRpY2luZS1ib3gsbGF5b3V0LG1laCxpbnRlcmFjdGlvbixtZXNzYWdlLG1lbnUsbWVyZ2UtY2VsbHMsbW9iaWxlLG1vbmV5LWNvbGxlY3Qsbm9kZS1pbmRleCxtb25pdG9yLG5vZGUtZXhwYW5kLG1vcmUsbnVtYmVyLG5vdGlmaWNhdGlvbixvbmUtdG8tb25lLHBlcmNlbnRhZ2UscGhvbmUscGFwZXItY2xpcCxwYXJ0aXRpb24scGljdHVyZSxub2RlLWNvbGxhcHNlLHBsYXktc3F1YXJlLHBheS1jaXJjbGUscG91bmQscHJvZmlsZSxwcm9qZWN0LHByb3BlcnR5LXNhZmV0eSxwb3dlcm9mZixwdXNocGluLHFyY29kZSxwcmludGVyLHBvdW5kLWNpcmNsZSxwdWxsLXJlcXVlc3QscmVzdCxyZWFkLHJlbG9hZCxyZWNvbmNpbGlhdGlvbixyb2JvdCxyb2NrZXQscm90YXRlLXJpZ2h0LHNhZmV0eS1jZXJ0aWZpY2F0ZSxyZWQtZW52ZWxvcGUscm90YXRlLWxlZnQsc2F2ZSxzYWZldHksc2VhcmNoLHNlY3VyaXR5LXNjYW4sc2NhbixzZW5kLHNldHRpbmcsc2VsZWN0LHNoYWtlLHNob3BwaW5nLWNhcnQsc2lzdGVybm9kZSxzaG9wLHNob3BwaW5nLHNoYXJlLWFsdCxzY2hlZHVsZSxza2luLHNtaWxlLHNvbHV0aW9uLHNvdW5kLHNwbGl0LWNlbGxzLHN0YXIsc3Vibm9kZSx0YWdzLHRhYmxldCx0YWcsdGFibGUsc3dpdGNoZXIsc3luYyx0ZWFtLHRvb2wsdHJhZGVtYXJrLWNpcmNsZSx0aHVuZGVyYm9sdCx0by10b3AsdHJhbnNsYXRpb24sdHJhZGVtYXJrLHRyb3BoeSx1bmdyb3VwLHVubG9jayx1cGxvYWQsdHJhbnNhY3Rpb24sdXNlci1kZWxldGUsdXNiLHVzZXItYWRkLHVzZXJncm91cC1kZWxldGUsdmlkZW8tY2FtZXJhLWFkZCx2ZXJpZmllZCx1c2VyZ3JvdXAtYWRkLHVzZXIsdXNlci1zd2l0Y2gsdmlkZW8tY2FtZXJhLHdpZmksd2FsbGV0LHdoYXRzLWFwcCx3b21hbixhcHBzdG9yZScuc3BsaXQoJywnKVxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UganNvbiBleHRlbmRzIE9iamVjdCB7XHJcbiAgW2tleTogc3RyaW5nXTogYW55XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBTZXJ2ZXJQYWdpbmF0aW9uU3RhbmRhcmQge1xyXG4gIGN1cnJlbnRQYWdlOiBudW1iZXI7XHJcbiAgc2hvd0NvdW50OiBudW1iZXI7XHJcbiAgdG90YWxSZXN1bHQ6IG51bWJlcjtcclxuICB0b3RhbFBhZ2U/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIdHRwUmVzcG9uc2VEYXRhU3RhbmRhcmQge1xyXG4gIHN0YXRlOiBudW1iZXI7IC8vIOS4ujHmiY3mmK/miJDlip9cclxuICBkYXRhOiBqc29uIHwgW3t9XSB8IG9iamVjdCB8IHN0cmluZyB8IGFueTsgLy/msqHmnInlgLwgZGF0YTogJydcclxuICBtZXNzOiBzdHJpbmc7IC8v6L+U5Zue55qE5raI5oGvXHJcbiAgcGFnZT86IFNlcnZlclBhZ2luYXRpb25TdGFuZGFyZDtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIdHRwUnNlcG9uc2VUcmFuc2Zvcm1DZWxsIHtcclxuICBba2V5OiBzdHJpbmddOiBqc29uXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIdHRwT3B0aW9ucyB7XHJcbiAgaGVhZGVycz86IHt9LFxyXG4gIGlzSnNvbkVuY29kZT86IGJvb2xlYW5cclxuICBpc1VybEVuY29kZT86IGJvb2xlYW5cclxuICBpc0F1dG9TaG93TWVzc2FnZT86IGJvb2xlYW5cclxuICBpc1dpdGhDcmVkZW50aWFscz86IGJvb2xlYW5cclxuICBpc0NvbW1vbkh0dHBIZWFkZXI/OiBib29sZWFuXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFVzZXJBY3Rpb24ge1xyXG4gIEFERCxcclxuICBFRElULFxyXG4gIERFTCxcclxuICBRVUVSWSxcclxuICBTVVBQRVJBRERcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEF0ckZvcm1PcHQge1xyXG4gIHR5cGU6ICdhZGQnIHwgJ2VkaXQnIHwgJ3ZpZXcnLFxyXG4gIGxheW91dD86IFwiZnVsbFwiIHwgJzFsMmMnIHwgJzFsMWMnLFxyXG4gIGl0ZW1zOiBBdHJGb3JtRGV0YWlsW10sLy/ooajljZXpobnnm65cclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEF0ckZvcm1EZXRhaWwge1xyXG4gIGxhYmVsOiBzdHJpbmcsXHJcbiAgdHlwZTogJ2Nhc2NhZGVyJyB8ICdyYWRpbycgfCAndGV4dCcgfCAnaW1hZ2UnIHwgJ3NlbGVjdCcgfCAnZGF0ZScgfCAnbnVtYmVyJyB8ICd0ZWxwaG9uZScgfCAncGFzc3dvcmQnIHwgJ2NoZWNrYm94J1xyXG4gICAgfCAnZWRpdG9yJyB8ICd0ZXh0YXJlYScgfCAnZGF0ZVRpbWUnIHwgJ3RpdGxlJyB8ICdkYXRlUmFuZ2UnIHwgJ3NlbGVjdGMnIHwgJ3NlbGVjdEljb24nIHwgJ3RyZWVTZWxlY3QnLFxyXG4gIGtleTogc3RyaW5nLFxyXG4gIGlzSGlkZGVuPzogYm9vbGVhbixcclxuICBkZWZhdWx0VmFsdWU/OiBhbnksXHJcbiAgdmFsdWU/OiBhbnksLy/nvJbovpHkuIvljp/lp4vmlbDlgLxcclxuICBkaWN0Q29kZT86IHN0cmluZywvL3NlbGVjdCDmqKHlvI/kuIvphY3nva5cclxuICBzcGFuPzogbnVtYmVyLC8v5pi+56S65a695bqmXHJcbiAgdmFsaWRhdG9ycz86IEF0ckZvcm1WYWxpZFtdLC8v6aqM6K+B5p2h5Lu2XHJcbiAgaXNSZXF1aXJlZD86IGJvb2xlYW4gfCBzdHJpbmcsLy/pmpDmgKfmnaHku7Yg5peg6ZyA5aGr5YaZLCBzdHJpbmfnsbvlnovmoLzlvI/lkIxvcGVyYXRvclxyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nLFxyXG4gIGltYWdlT3B0cz86IEltYWdlT3B0cyxcclxuICBlZGl0Q29udGVudD86IHN0cmluZyxcclxuICBoZWlnaHQ/OiBudW1iZXIsLy9lZGl0b3LmnInmlYhcclxuICBkaXNhYmxlPzogYm9vbGVhbixcclxuICBsc3Bhbj86IG51bWJlcixcclxuICBjc3Bhbj86IG51bWJlcixcclxuICByb3dzPzogbnVtYmVyLC8vdGV4dGFyZWEg5pi+56S66KGM5pWwXHJcbiAgb3BlcmF0b3I/OiBzdHJpbmcsLy/mmL7npLrmk43kvZznrKYg5qC85byPIOWmgjpzdGF0dXN8ZXF8MFxyXG4gIGJ1dHRvbj86IGZvcm1CdXR0b24sXHJcbiAgcmVhZG9ubHk/OiBib29sZWFuLFxyXG4gIGRhdGVGb3JtYXQ/OiBzdHJpbmcsXHJcbiAgZGljdExpc3Q/OiBDdXNEaWN0W10sXHJcbiAgc2VsZWN0VXJsPzogeyB1cmw6IHN0cmluZywgY29udmVydD86IHN0cmluZywgdHlwZT86ICdnZXQnIHwgJ3Bvc3QnLCBob3N0PzogJ29zcycgfCAnc2VydmUnLCBpc011bHRpcGxlPzogYm9vbGVhbiB9LFxyXG4gIHRyZWVMaXN0PzogeyBrZXk6IHN0cmluZywgdGl0bGU6IHN0cmluZyB9W10sXHJcbiAgZW5kcz86IHN0cmluZyxcclxuICBwcm9wb3NhbD86IHN0cmluZyxcclxuICB0ZW1wPzogYW55LFxyXG4gIG5vdE51bGw/OiBib29sZWFuXHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQXRyRm9ybVZhbGlkIHtcclxuICB0eXBlOiAncmVxdWlyZWQnIHwgJ2VtYWlsJyB8ICd0ZWxwaG9uZScgfCAnbWF4bGVuZ3RoJyB8ICdtaW5sZW5ndGgnIHwgJ3BhdHRlcm4nIHwgJ29wZXJhdG9yJyxcclxuICBlcnJvckxhYmVsOiBzdHJpbmcsXHJcbiAgbWF4bGVuZ3RoPzogbnVtYmVyLFxyXG4gIG1pbmxlbmd0aD86IG51bWJlcixcclxuICBwYXR0ZXJuVmFsdWU/OiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIGZvcm1CdXR0b24ge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICBpc1Nob3c6IGJvb2xlYW4sXHJcbiAgY29kZTogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBjb2xvck9wZXJhdG9yIHtcclxuICBjb2xvcjogc3RyaW5nLFxyXG4gIG9wZXJhdG9yOiBzdHJpbmcsLy/op4TliJlcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEF0clF1ZXlyT3B0IHtcclxuICBhY3Rpb25zPzogVGFibGVBY3Rpb25bXSxcclxuICBpc0luZGV4PzogYm9vbGVhbiwvL+aYr+WQpuaYvuekuuW6j+WPtyxcclxuICBjb2xvcj86IGNvbG9yT3BlcmF0b3IsLy/popzoibJcclxuICBjaGVja0JveD86IHtcclxuICAgIGlzU2hvd0NoZWNrYm94PzogYm9vbGVhbixcclxuICAgIGlzUmFkaW8/OiBib29sZWFuLFxyXG4gICAgaXNGb3JiaWQ/OiBib29sZWFuLC8vdHJ1ZeaXtuWPquWFgeiuuOeCueWHu+WkmumAieahhumAieaLqVxyXG4gIH0sXHJcbiAgLy8gaXNTaG93Q2hlY2tib3g/OiBib29sZWFuLFxyXG4gIHNob3dOdW0/OiBudW1iZXIsXHJcbiAgdXJsOiBzdHJpbmcsXHJcbiAgc29ydD86IHN0cmluZyxcclxuICBoZWFkZXJzPzogQXRyUXVlcnlIZWFkZXJbXSxcclxuICB0YWJsZXM6IFRhYmxlW10sXHJcbiAgaXNBdXRvUXVlcnk/OiBib29sZWFuLC8vdHJ1ZeaXtuWAmem7mOiupOinpuWPkeafpeivolxyXG4gIGRlZmF1bHRQYXJhbXM/OiBqc29uLFxyXG4gIGlzSGlkZVF1ZXJ5PzogYm9vbGVhblxyXG4gIC8vIGlzUmFkaW8/OmJvb2xlYW4sXHJcbiAgLy8gaXNGb3JiaWQ/OmJvb2xlYW4sLy90cnVl5pe25Y+q5YWB6K6454K55Ye75aSa6YCJ5qGG6YCJ5oupXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBUYWJsZSB7XHJcbiAgbmFtZTogc3RyaW5nLC8v6KGo5aS05ZCN56ewXHJcbiAga2V5Pzogc3RyaW5nLC8v5a6e6ZmF5pWw5o2u5a2X5q61XHJcbiAgZGVmYXVsdFZhbD86IGFueSxcclxuICBzb3J0S2V5Pzogc3RyaW5nLC8v5piv5ZCm5o6S5bqPXHJcbiAgc29ydGFibGU/OiBib29sZWFuLFxyXG4gIHR5cGU6ICd0ZXh0Y29sb3InIHwgJ2ZpeGVkVGV4dCcgfCAndGV4dCcgfCAnbGluaycgfCAnYWN0aW9uJyB8ICdpbWFnZScgfCAnZGF0ZScgfCAnZGF0ZVRpbWUnIHwgJ3NEYXRlVGltZScgfCAnZGljdCcsLy/nsbvlnovvvJog5paH5a2X44CB6ZO+5o6l44CB5pON5L2cXHJcbiAgZGljdENvZGU/OiBzdHJpbmcsXHJcbiAgaXNTaG93PzogYm9vbGVhbixcclxuICB3aWR0aD86IHN0cmluZywvLzE1MHB4XHJcbiAgYWN0aW9ucz86IFRhYmxlQWN0aW9uW10sXHJcbiAgaXNSb3dTcGFuPzogYm9vbGVhbixcclxuICBpc1JpZ2h0PzogYm9vbGVhblxyXG4gIGlzTGVmdD86IGJvb2xlYW4sXHJcbiAgY29sb3I/OiBjb2xvck9wZXJhdG9yLC8v6aKc6ImyXHJcbiAgY29sb3JTaG93Pzogc3RyaW5nLFxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQXRyUXVlcnlIZWFkZXIge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICB0eXBlOiAnY2FzY2FkZXInIHwgJ3RleHQnIHwgJ251bWJlcicgfCAnY2hlY2tib3gnIHwgJ3NlbGVjdCcgfCAnZGF0ZXBpY2tlcicgfCAnc2VsZWN0Q3VzJyB8ICdkYXRlUmFuZ2UnIHwgJ3NkYXRlJyB8ICd0cmVlU2VsZWN0JyxcclxuICBrZXk6IHN0cmluZyxcclxuICBpc1Nob3c/OiBib29sZWFuLFxyXG4gIGNvZGU/OiBzdHJpbmcsXHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmcsXHJcbiAgc3Bhbj86IG51bWJlcixcclxuICBkaWN0Q29kZT86IHN0cmluZywvL+Wtl+WFuOe8lueggVxyXG4gIGRpY3RMaXN0PzogQ3VzRGljdFtdLFxyXG4gIGRlZmF1bHRWYWw/OiBhbnkgLy8g6buY6K6k5YC8XHJcbiAgbWF4VGFnQ291bnQ/OiBudW1iZXIsXHJcbiAgbHNwYW4/OiBudW1iZXIsXHJcbiAgY3NwYW4/OiBudW1iZXIsXHJcbiAgZGlzYWJsZUNsZWFyPzogYm9vbGVhbixcclxuICB0cmVlTGlzdD86IHsga2V5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcgfVtdXHJcbiAgLyoqXHJcbiAgICog5qC85byPXHJcbiAgICogY29udmVydDona2V5fGlkLHRpdGxlfHJlYWxOYW1lJyh0cmVlU2VsZWN0KVxyXG4gICAqICAgIHZhbHVlfGlkLGxhYmVsfG5hbWUoc2VsZWN0Q3VzKVxyXG4gICAqL1xyXG4gIHNlbGVjdFVybD86IHsgdXJsOiBzdHJpbmcsIGNvbnZlcnQ6IHN0cmluZywgaXNNdWx0aXBsZT86IGJvb2xlYW4gfSwvL2NvbnZlcnQ6IG5ld0tleXxvbGRLZXksbmV3S2V5fG9sZEtleSjmjqXlj6Pov5Tlm57nmoTlgLwpXHJcbiAgaWNvbj86IHsgaXNTaG93OiBib29sZWFuLCBjb2RlOiBzdHJpbmcsIGljb246IGFueSB9LFxyXG4gIGRhdGVNb2RlPzogJ3dlZWsnIHwgJ21vbnRoJyB8ICd5ZWFyJyxcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFRhYmxlQWN0aW9uIHtcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgY29kZTogc3RyaW5nLFxyXG4gIHVybD86IHN0cmluZyxcclxuICBnVHlwZT86ICdub3JtYWwnIHwgJ3VwbG9hZCcsXHJcbiAgZGF0YT86IGFueSxcclxuICBkYXRhcz86IGFueVtdLFxyXG4gIGljb24/OiBzdHJpbmcsXHJcbiAgbnVtYmVyT2ZDaGVja2VkPzogbnVtYmVyLFxyXG4gIHR5cGU/OiAncm93cycgfCAncm93JyxcclxuICBvcGVyYXRvcj86IHN0cmluZywvL+aYvuekuuaTjeS9nOesplxyXG4gIGJ1dHRvblR5cGU/OiAncHJpbWFyeScgfCAnZGFzaGVkJyB8ICdkYW5nZXInIHwgJ2RlZmF1bHQnIHwgJ2xpbmsnLFxyXG4gIHZhbHVlPzogYW55LFxyXG4gIHdpdGhvdXRSb2xlPzogYm9vbGVhbi8v5LiN6ZyA6KaB5p2D6ZmQ5o6n5Yi2XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBGb3JtQWN0aW9uIHtcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgY29kZTogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBEaWN0IHtcclxuICBpZDogc3RyaW5nLFxyXG4gIHR5cGVOYW1lOiBzdHJpbmcsXHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRGljdEdyb3VwIHtcclxuICBncm91cENvZGU6IHN0cmluZyxcclxuICBkaWN0czogRGljdFtdXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDdXNEaWN0IHtcclxuICBsYWJlbDogc3RyaW5nLFxyXG4gIHZhbHVlOiBzdHJpbmcsXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJbWFnZU9wdHMge1xyXG4gIGxpbWl0PzogbnVtYmVyLFxyXG4gIHVwbG9hZERpcjogc3RyaW5nLFxyXG4gIHJlbW92ZUFjdGlvbj86IHN0cmluZyxcclxuICBpbWFnZUxpc3Q/OiBhbnlbXSxcclxuICBrZXk/OiBzdHJpbmcsXHJcbiAgbGFiZT86IHN0cmluZyxcclxuICBmaWxlTmFtZT86IHN0cmluZyxcclxuICB1cGxvYWRUeXBlPzogJ2RyYWcnIHwgJycsXHJcbiAgbnpGaWxlVHlwZT86IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgZXF1aXBUZXN0RGF0YSB7XHJcbiAgY29kZTogc3RyaW5nXHJcbiAgaXRlbU5hbWU6IHN0cmluZ1xyXG4gIHpob3UxOiBudW1iZXJcclxuICB6aG91MjogbnVtYmVyXHJcbiAgemhvdTM6IG51bWJlclxyXG4gIHpob3U0OiBudW1iZXJcclxuICB6aG91NTogbnVtYmVyXHJcbiAgemhvdTY6IG51bWJlclxyXG4gIGlzV3JvbmcxPzogYm9vbGVhblxyXG4gIGlzV3JvbmcyPzogYm9vbGVhblxyXG4gIGlzV3JvbmczPzogYm9vbGVhblxyXG4gIGlzV3Jvbmc0PzogYm9vbGVhblxyXG4gIGlzV3Jvbmc1PzogYm9vbGVhblxyXG4gIGlzV3Jvbmc2PzogYm9vbGVhblxyXG59XHJcblxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFNlbGVjdEFjdGlvbiB7XHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIGNvZGU6IFwibmdNb2RlbENoYW5nZVwiIHwgJ256T3BlbkNoYW5nZScsXHJcbiAgZGF0YT86IGFueSxcclxuICBrZXk/OiBzdHJpbmcsXHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBNZW51SWNvbiB7XHJcbiAgLyoqIFR5cGUgZm9yIGljb24gKi9cclxuICB0eXBlOiAnY2xhc3MnIHwgJ2ljb24nIHwgJ2ljb25mb250JyB8ICdpbWcnO1xyXG4gIC8qKiBWYWx1ZSBmb3IgdGhlIGljb24sIGNhbiBiZSBzZXQgQ2xhc3MgTmFtZSwgbnotaWNvbiBvZiBgbnpUeXBlYCwgaW1hZ2UgKi9cclxuICB2YWx1ZT86IHN0cmluZztcclxuICAvKiogVHlwZSBvZiB0aGUgYW50IGRlc2lnbiBpY29uLCBkZWZhdWx0OiBgb3V0bGluZWAgKi9cclxuICB0aGVtZT86ICdvdXRsaW5lJyB8ICd0d290b25lJyB8ICdmaWxsJztcclxuICAvKiogUm90YXRlIGljb24gd2l0aCBhbmltYXRpb24sIGRlZmF1bHQ6IGBmYWxzZWAgKi9cclxuICBzcGluPzogYm9vbGVhbjtcclxuICAvKiogT25seSBzdXBwb3J0IHRoZSB0d28tdG9uZSBpY29uLiBTcGVjaWZpYyB0aGUgcHJpbWFyeSBjb2xvciAqL1xyXG4gIHR3b1RvbmVDb2xvcj86IHN0cmluZztcclxuICAvKiogVHlwZSBvZiB0aGUgaWNvbiBmcm9tIGljb25mb250ICovXHJcbiAgaWNvbmZvbnQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVudSB7XHJcbiAgdGV4dD86IHN0cmluZztcclxuICBsaW5rPzogc3RyaW5nO1xyXG4gIHJlYWxMaW5rPzpzdHJpbmc7XHJcbiAgaXNTZWxlY3RlZD86IEJvb2xlYW47XHJcbiAgaXNPcGVuPzogQm9vbGVhbjtcclxuICB0YXJnZXQ/OiAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCc7XHJcbiAgLyoqIEljb24gZm9yIHRoZSBtZW51IGl0ZW0sIG9ubHkgdmFsaWQgZm9yIHRoZSBmaXJzdCBsZXZlbCBtZW51ICovXHJcbiAgaWNvbj86IHN0cmluZyB8IE1lbnVJY29uIHwgbnVsbDtcclxuICAvKiogQmFkZ2V0IGZvciB0aGUgbWVudSBpdGVtIHdoZW4gYGdyb3VwYCBpcyBgdHJ1ZWAgKi9cclxuICBvcGVyYXRpb24/OiBzdHJpbmc7XHJcbiAgLyoqIFdoZXRoZXIgc2hvcnRjdXQgbWVudSBpdGVtICovXHJcbiAgc2VxPzogbnVtYmVyO1xyXG4gIGxldmVsPzogbnVtYmVyO1xyXG4gIC8qKiBXaGV0ZXIgc2hvcnRjdXQgbWVudSByb290IG5vZGUgKi9cclxuICBsaW5rVHlwZT86IHN0cmluZztcclxuICAvKiogV2hldGhlciB0byBhbGxvdyByZXVzZSwgbmVlZCB0byBjb29wZXJhdGUgd2l0aCB0aGUgYHJldXNlLXRhYmAgY29tcG9uZW50ICovXHJcbiAgY2hpbGRyZW4/OiBNZW51W107XHJcbiAgaXNWaXNpYmxlPzonMCcgfCcxJ1xyXG59XHJcbiJdfQ==
@@ -3,27 +3,30 @@ import { FormControl, Validators } from '@angular/forms';
3
3
  import { telphoneValidator } from '../validators/atr-validtors';
4
4
  import { formatDate } from '@angular/common';
5
5
  import { atr_static_datas } from "../../../core/base/atr-common";
6
+ import { ToolsUtil } from "../../../core/utils/ToolsUtil";
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "../share.service";
8
- import * as i2 from "@angular/forms";
9
- import * as i3 from "../../../core/services/dict/dict.service";
10
- import * as i4 from "ng-zorro-antd/form";
11
- import * as i5 from "ng-zorro-antd/tree-select";
12
- import * as i6 from "../select-icons/select-icons.component";
13
- import * as i7 from "ng-zorro-antd/input-number";
14
- import * as i8 from "ng-zorro-antd/radio";
15
- import * as i9 from "ng-zorro-antd/select";
16
- import * as i10 from "ng-zorro-antd/cascader";
17
- import * as i11 from "ng-zorro-antd/date-picker";
18
- import * as i12 from "../upload/upload.component";
19
- import * as i13 from "../quill-editor/quill-editor.component";
20
- import * as i14 from "ng-zorro-antd/grid";
21
- import * as i15 from "@angular/common";
22
- import * as i16 from "ng-zorro-antd/input";
9
+ import * as i2 from "../../../core/services/http.service";
10
+ import * as i3 from "@angular/forms";
11
+ import * as i4 from "../../../core/services/dict/dict.service";
12
+ import * as i5 from "ng-zorro-antd/form";
13
+ import * as i6 from "ng-zorro-antd/tree-select";
14
+ import * as i7 from "../select-icons/select-icons.component";
15
+ import * as i8 from "ng-zorro-antd/input-number";
16
+ import * as i9 from "ng-zorro-antd/radio";
17
+ import * as i10 from "ng-zorro-antd/select";
18
+ import * as i11 from "ng-zorro-antd/cascader";
19
+ import * as i12 from "ng-zorro-antd/date-picker";
20
+ import * as i13 from "../upload/upload.component";
21
+ import * as i14 from "../quill-editor/quill-editor.component";
22
+ import * as i15 from "ng-zorro-antd/grid";
23
+ import * as i16 from "@angular/common";
24
+ import * as i17 from "ng-zorro-antd/input";
23
25
  export class AtrFormComponent {
24
26
  // tslint:disable-next-line:max-line-length
25
- constructor(shareService, fb, dictService, injector, locale) {
27
+ constructor(shareService, httpService, fb, dictService, injector, locale) {
26
28
  this.shareService = shareService;
29
+ this.httpService = httpService;
27
30
  this.fb = fb;
28
31
  this.dictService = dictService;
29
32
  this.injector = injector;
@@ -69,6 +72,18 @@ export class AtrFormComponent {
69
72
  this.resetLayout(item);
70
73
  let value = this.formOpts.type == 'add' ? item.defaultValue : item.value;
71
74
  console.log(value);
75
+ if (item.type == 'treeSelect' && item.selectUrl.url) {
76
+ let keys = item.selectUrl.convert.split(',');
77
+ this.httpService.post(item.selectUrl.url, {}, ToolsUtil.getHttpOptions()).subscribe(res => {
78
+ item.treeList = res.data.filter((child) => {
79
+ keys.forEach((v) => {
80
+ let vs = v.split("|");
81
+ child[vs[0]] = child[vs[1]];
82
+ });
83
+ return true;
84
+ });
85
+ });
86
+ }
72
87
  if (item.type == "select") {
73
88
  this.getDictValue(item.dictCode);
74
89
  }
@@ -360,12 +375,12 @@ export class AtrFormComponent {
360
375
  return false;
361
376
  }
362
377
  }
363
- AtrFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AtrFormComponent, deps: [{ token: i1.ShareService }, { token: i2.FormBuilder }, { token: i3.DictService }, { token: i0.Injector }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });
364
- AtrFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AtrFormComponent, selector: "atr-form", inputs: { formOpts: "formOpts" }, outputs: { formAction: "formAction" }, ngImport: i0, template: "<form nz-form [formGroup]=\"atrForm\">\r\n <div nz-row nzGutter=\"8\" nzType=\"flex\" nzAlign=\"top\">\r\n <ng-container *ngFor=\"let item of formOpts.items\">\r\n <div nz-col nzSpan=\"24\" class=\"form-title\" *ngIf=\"item.type == 'title'\" >\r\n {{item.label}}\r\n </div>\r\n <div nz-col [nzSpan]=\"item.span\" *ngIf=\"isShow(item.isHidden,item.operator)\">\r\n\r\n <nz-form-item *ngIf=\"item.type != 'title'\">\r\n <nz-form-label [nzSm]=\"item.lspan\" [nzXs]=\"24\" [nzRequired]=\"isRequired(item)\">{{item.label}}</nz-form-label>\r\n <nz-form-control [nzSm]=\"item.cspan\" [nzXs]=\"24\">\r\n <nz-tree-select *ngIf=\"item.type == 'treeSelect'\"\r\n [nzNodes]=\"item.treeList\"\r\n nzShowSearch=\"true\"\r\n nzHideUnMatched=\"true\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n [nzShowSearch]=\"true\"\r\n [formControlName]=\"item.key\"\r\n [nzAllowClear]=\"!item.notNull\"\r\n [nzMultiple]=\"item.selectUrl.isMultiple\"\r\n [nzDisabled]=\"item.readonly\"\r\n style=\"flex: 1\"\r\n >\r\n </nz-tree-select>\r\n <app-select-icons *ngIf=\"item.type == 'selectIcon'\" nz-input placeholder=\"{{item.placeholder}}\"\r\n [readonly]=\"item.readonly \"\r\n style=\"flex: 1\"\r\n [formControlName]=\"item.key\">\r\n </app-select-icons>\r\n <input *ngIf=\"item.type == 'text'\" nz-input placeholder=\"{{item.placeholder}}\"\r\n [readonly]=\"item.readonly || formOpts.type == 'view'\"\r\n [formControlName]=\"item.key\"/>\r\n <textarea *ngIf=\"item.type == 'textarea'\" nz-input [rows]=\"item.rows\" placeholder=\"{{item.placeholder}}\"\r\n [formControlName]=\"item.key\" [readonly]=\"item.readonly|| formOpts.type == 'view'\"></textarea>\r\n <nz-input-number *ngIf=\"item.type == 'number'\" nzPlaceHolder=\"{{item.placeholder}}\"\r\n [formControlName]=\"item.key\"></nz-input-number>\r\n <nz-radio-group *ngIf=\"item.type == 'radio'\" [formControlName]=\"item.key\">\r\n <label nz-radio *ngFor=\"let o of item.dictList\" [nzValue]=\"o.value\" >{{o.label}}</label>\r\n </nz-radio-group>\r\n <nz-select\r\n *ngIf=\"item.type == 'select'\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n nzAllowClear=\"true\"\r\n [formControlName]=\"item.key\"\r\n nzServerSearch\r\n nzDisabled=\"{{item.readonly|| formOpts.type == 'view'}}\"\r\n >\r\n <nz-option *ngFor=\"let o of dicts[item.dictCode]\" [nzLabel]=\"o.typeName\" [nzValue]=\"o.id\"></nz-option>\r\n </nz-select>\r\n <nz-select\r\n *ngIf=\"item.type == 'selectc'\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n nzAllowClear=\"true\"\r\n [formControlName]=\"item.key\"\r\n nzServerSearch\r\n nzDisabled=\"{{item.readonly|| formOpts.type == 'view'}}\"\r\n >\r\n <nz-option *ngFor=\"let o of item.dictList\" [nzLabel]=\"o.label\" [nzValue]=\"o.value\" > </nz-option>\r\n </nz-select>\r\n <nz-cascader [nzDisabled]=\"item.readonly\" style=\"flex: 1\" [nzAllowClear]=\"!item.notNull\"\r\n [nzValueProperty]=\"'nzValueProperty'\"\r\n [nzShowSearch]=\"true\" *ngIf=\"item.type == 'cascader'\"\r\n [nzOptions]=\"item.dictList\" [formControlName]=\"item.key\" ></nz-cascader>\r\n <nz-date-picker *ngIf=\"item.type == 'date'\" [nzFormat]=\"item.dateFormat ? item.dateFormat : 'yyyy-MM-dd'\"\r\n [nzShowTime]=\"showTime(item)\"\r\n [nzDisabled]=\"formOpts.type == 'view' || item.readonly \"\r\n [formControlName]=\"item.key\"></nz-date-picker>\r\n <nz-range-picker *ngIf=\"item.type == 'dateRange'\" [nzFormat]=\"'yyyy-MM-dd'\" [formControlName]=\"item.key\"\r\n [nzPlaceHolder]=\"['\u5F00\u59CB\u65F6\u95F4', '\u7ED3\u675F\u65F6\u95F4']\"></nz-range-picker>\r\n\r\n <input *ngIf=\"item.type == 'image'\" nz-input [formControlName]=\"item.key\" [hidden]=\"true\"/>\r\n <atr-img-upload *ngIf=\"item.type == 'image'\" [(opts)]=\"item.imageOpts\"\r\n (afterChange)=\"imageUploadChange($event)\"></atr-img-upload>\r\n\r\n <!-- <editor *ngIf=\"item.type == 'editor'\" [formControlName]=\"item.key\" [config]=\"{initialFrameHeight:item.height}\" ></editor>-->\r\n <app-quill-editor *ngIf=\"item.type == 'editor'\" [formControlName]=\"item.key\"\r\n [styles]=\"{height:item.height > 0 ? item.height + 'px' : '250px'}\"></app-quill-editor>\r\n\r\n <ng-container *ngFor=\"let valid of item.validators\">\r\n <ng-container *ngIf=\"atrForm.get(item.key).hasError(valid.type) && (atrForm.get(item.key).dirty )\">\r\n <div style=\"color:red; height: 15px;margin: 0;line-height: 15px;\">{{valid.errorLabel}}</div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <button *ngIf=\"item.button?.isShow\" type=\"button\" class=\"ant-btn ant-btn-primary\"\r\n (click)=\"doAction(item.button,$event)\">\r\n <span>{{item.button.name}}</span></button>\r\n </nz-form-control>\r\n <ng-container *ngTemplateOutlet=\"item.temp\"></ng-container>\r\n </nz-form-item>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n</form>\r\n", styles: [":host ::ng-deep .ant-form-item{margin:0 0 10px}:host ::ng-deep .ant-form-item-label{text-align:left}:host ::ng-deep nz-input-number{width:100%}:host .form-title{height:50px;line-height:50px;font-weight:500;font-size:20px;border-bottom:1px solid #e8e8e8;border-radius:4px 4px 0 0;margin-bottom:14px;margin-top:11px}\n"], components: [{ type: i4.NzFormItemComponent, selector: "nz-form-item", exportAs: ["nzFormItem"] }, { type: i4.NzFormLabelComponent, selector: "nz-form-label", inputs: ["nzFor", "nzRequired", "nzNoColon", "nzTooltipTitle", "nzTooltipIcon"], exportAs: ["nzFormLabel"] }, { type: i4.NzFormControlComponent, selector: "nz-form-control", inputs: ["nzSuccessTip", "nzWarningTip", "nzErrorTip", "nzValidatingTip", "nzExtra", "nzAutoTips", "nzDisableAutoTips", "nzHasFeedback", "nzValidateStatus"], exportAs: ["nzFormControl"] }, { type: i5.NzTreeSelectComponent, selector: "nz-tree-select", inputs: ["nzId", "nzAllowClear", "nzShowExpand", "nzShowLine", "nzDropdownMatchSelectWidth", "nzCheckable", "nzHideUnMatched", "nzShowIcon", "nzShowSearch", "nzDisabled", "nzAsyncData", "nzMultiple", "nzDefaultExpandAll", "nzCheckStrictly", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualHeight", "nzExpandedIcon", "nzNotFoundContent", "nzNodes", "nzOpen", "nzSize", "nzPlaceHolder", "nzDropdownStyle", "nzDropdownClassName", "nzBackdrop", "nzStatus", "nzExpandedKeys", "nzDisplayWith", "nzMaxTagCount", "nzMaxTagPlaceholder", "nzTreeTemplate"], outputs: ["nzOpenChange", "nzCleared", "nzRemoved", "nzExpandChange", "nzTreeClick", "nzTreeCheckBoxChange"], exportAs: ["nzTreeSelect"] }, { type: i6.SelectIconsComponent, selector: "app-select-icons", inputs: ["readonly", "placeholder"] }, { type: i7.NzInputNumberComponent, selector: "nz-input-number", inputs: ["nzSize", "nzMin", "nzMax", "nzParser", "nzPrecision", "nzPrecisionMode", "nzPlaceHolder", "nzStatus", "nzStep", "nzInputMode", "nzId", "nzDisabled", "nzReadOnly", "nzAutoFocus", "nzBorderless", "nzFormatter"], outputs: ["nzBlur", "nzFocus"], exportAs: ["nzInputNumber"] }, { type: i8.NzRadioGroupComponent, selector: "nz-radio-group", inputs: ["nzDisabled", "nzButtonStyle", "nzSize", "nzName"], exportAs: ["nzRadioGroup"] }, { type: i8.NzRadioComponent, selector: "[nz-radio],[nz-radio-button]", inputs: ["nzValue", "nzDisabled", "nzAutoFocus"], exportAs: ["nzRadio"] }, { type: i9.NzSelectComponent, selector: "nz-select", inputs: ["nzId", "nzSize", "nzStatus", "nzOptionHeightPx", "nzOptionOverflowSize", "nzDropdownClassName", "nzDropdownMatchSelectWidth", "nzDropdownStyle", "nzNotFoundContent", "nzPlaceHolder", "nzMaxTagCount", "nzDropdownRender", "nzCustomTemplate", "nzSuffixIcon", "nzClearIcon", "nzRemoveIcon", "nzMenuItemSelectedIcon", "nzTokenSeparators", "nzMaxTagPlaceholder", "nzMaxMultipleCount", "nzMode", "nzFilterOption", "compareWith", "nzAllowClear", "nzBorderless", "nzShowSearch", "nzLoading", "nzAutoFocus", "nzAutoClearSearchValue", "nzServerSearch", "nzDisabled", "nzOpen", "nzBackdrop", "nzOptions", "nzShowArrow"], outputs: ["nzOnSearch", "nzScrollToBottom", "nzOpenChange", "nzBlur", "nzFocus"], exportAs: ["nzSelect"] }, { type: i9.NzOptionComponent, selector: "nz-option", inputs: ["nzLabel", "nzValue", "nzDisabled", "nzHide", "nzCustomContent"], exportAs: ["nzOption"] }, { type: i10.NzCascaderComponent, selector: "nz-cascader, [nz-cascader]", inputs: ["nzOptionRender", "nzShowInput", "nzShowArrow", "nzAllowClear", "nzAutoFocus", "nzChangeOnSelect", "nzDisabled", "nzColumnClassName", "nzExpandTrigger", "nzValueProperty", "nzLabelRender", "nzLabelProperty", "nzNotFoundContent", "nzSize", "nzBackdrop", "nzShowSearch", "nzPlaceHolder", "nzMenuClassName", "nzMenuStyle", "nzMouseEnterDelay", "nzMouseLeaveDelay", "nzStatus", "nzTriggerAction", "nzChangeOn", "nzLoadData", "nzSuffixIcon", "nzExpandIcon", "nzOptions"], outputs: ["nzVisibleChange", "nzSelectionChange", "nzSelect", "nzClear"], exportAs: ["nzCascader"] }, { type: i11.NzDatePickerComponent, selector: "nz-date-picker,nz-week-picker,nz-month-picker,nz-year-picker,nz-range-picker", inputs: ["nzAllowClear", "nzAutoFocus", "nzDisabled", "nzBorderless", "nzInputReadOnly", "nzInline", "nzOpen", "nzDisabledDate", "nzLocale", "nzPlaceHolder", "nzPopupStyle", "nzDropdownClassName", "nzSize", "nzStatus", "nzFormat", "nzDateRender", "nzDisabledTime", "nzRenderExtraFooter", "nzShowToday", "nzMode", "nzShowNow", "nzRanges", "nzDefaultPickerValue", "nzSeparator", "nzSuffixIcon", "nzBackdrop", "nzId", "nzPlacement", "nzShowTime"], outputs: ["nzOnPanelChange", "nzOnCalendarChange", "nzOnOk", "nzOnOpenChange"], exportAs: ["nzDatePicker"] }, { type: i12.UploadComponent, selector: "atr-img-upload", inputs: ["opts", "isEdit", "allowChangSeq"], outputs: ["afterChange", "optsChange"] }, { type: i13.QuillEditorComponent, selector: "app-quill-editor", inputs: ["placeholder", "styles", "value", "readOnly", "needImgSeq"] }], directives: [{ type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NzFormDirective, selector: "[nz-form]", inputs: ["nzLayout", "nzNoColon", "nzAutoTips", "nzDisableAutoTips", "nzTooltipIcon"], exportAs: ["nzForm"] }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i14.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { type: i15.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i15.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i16.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i11.NzRangePickerComponent, selector: "nz-range-picker", exportAs: ["nzRangePicker"] }, { type: i15.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
378
+ AtrFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AtrFormComponent, deps: [{ token: i1.ShareService }, { token: i2.HttpService }, { token: i3.FormBuilder }, { token: i4.DictService }, { token: i0.Injector }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });
379
+ AtrFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AtrFormComponent, selector: "atr-form", inputs: { formOpts: "formOpts" }, outputs: { formAction: "formAction" }, ngImport: i0, template: "<form nz-form [formGroup]=\"atrForm\">\r\n <div nz-row nzGutter=\"8\" nzType=\"flex\" nzAlign=\"top\">\r\n <ng-container *ngFor=\"let item of formOpts.items\">\r\n <div nz-col nzSpan=\"24\" class=\"form-title\" *ngIf=\"item.type == 'title'\">\r\n {{item.label}}\r\n </div>\r\n <div nz-col [nzSpan]=\"item.span\" *ngIf=\"isShow(item.isHidden,item.operator)\">\r\n\r\n <nz-form-item *ngIf=\"item.type != 'title'\">\r\n <nz-form-label [nzSm]=\"item.lspan\" [nzXs]=\"24\" [nzRequired]=\"isRequired(item)\">{{item.label}}</nz-form-label>\r\n <nz-form-control [nzSm]=\"item.cspan\" [nzXs]=\"24\">\r\n <nz-tree-select *ngIf=\"item.type == 'treeSelect'\"\r\n [nzNodes]=\"item.treeList\"\r\n nzShowSearch=\"true\"\r\n nzHideUnMatched=\"true\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n [nzShowSearch]=\"true\"\r\n [formControlName]=\"item.key\"\r\n [nzAllowClear]=\"!item.notNull\"\r\n [nzMultiple]=\"item.selectUrl.isMultiple\"\r\n [nzDisabled]=\"item.readonly\"\r\n style=\"flex: 1\"\r\n >\r\n </nz-tree-select>\r\n <nz-tree-select *ngIf=\"item.type == 'treeSelect'\"\r\n [nzAllowClear]=\"!item.notNull\"\r\n [nzNodes]=\"item.treeList\"\r\n nzShowSearch=\"true\"\r\n nzHideUnMatched=\"true\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n [nzShowSearch]=\"true\"\r\n [formControlName]=\"item.key\"\r\n [nzMultiple]=\"item.selectUrl.isMultiple\"\r\n [nzDisabled]=\"item.readonly\" style=\"flex: 1\"\r\n >\r\n </nz-tree-select>\r\n <app-select-icons *ngIf=\"item.type == 'selectIcon'\" nz-input placeholder=\"{{item.placeholder}}\"\r\n [readonly]=\"item.readonly \"\r\n style=\"flex: 1\"\r\n [formControlName]=\"item.key\">\r\n </app-select-icons>\r\n <input *ngIf=\"item.type == 'text'\" nz-input placeholder=\"{{item.placeholder}}\"\r\n [readonly]=\"item.readonly || formOpts.type == 'view'\"\r\n [formControlName]=\"item.key\"/>\r\n <textarea *ngIf=\"item.type == 'textarea'\" nz-input [rows]=\"item.rows\" placeholder=\"{{item.placeholder}}\"\r\n [formControlName]=\"item.key\" [readonly]=\"item.readonly|| formOpts.type == 'view'\"></textarea>\r\n <nz-input-number *ngIf=\"item.type == 'number'\" nzPlaceHolder=\"{{item.placeholder}}\"\r\n [formControlName]=\"item.key\"></nz-input-number>\r\n <nz-radio-group *ngIf=\"item.type == 'radio'\" [formControlName]=\"item.key\">\r\n <label nz-radio *ngFor=\"let o of item.dictList\" [nzValue]=\"o.value\">{{o.label}}</label>\r\n </nz-radio-group>\r\n <nz-select\r\n *ngIf=\"item.type == 'select'\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n nzAllowClear=\"true\"\r\n [formControlName]=\"item.key\"\r\n nzServerSearch\r\n nzDisabled=\"{{item.readonly|| formOpts.type == 'view'}}\"\r\n >\r\n <nz-option *ngFor=\"let o of dicts[item.dictCode]\" [nzLabel]=\"o.typeName\" [nzValue]=\"o.id\"></nz-option>\r\n </nz-select>\r\n <nz-select\r\n *ngIf=\"item.type == 'selectc'\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n nzAllowClear=\"true\"\r\n [formControlName]=\"item.key\"\r\n nzServerSearch\r\n nzDisabled=\"{{item.readonly|| formOpts.type == 'view'}}\"\r\n >\r\n <nz-option *ngFor=\"let o of item.dictList\" [nzLabel]=\"o.label\" [nzValue]=\"o.value\"></nz-option>\r\n </nz-select>\r\n <nz-cascader [nzDisabled]=\"item.readonly\" style=\"flex: 1\" [nzAllowClear]=\"!item.notNull\"\r\n [nzValueProperty]=\"'nzValueProperty'\"\r\n [nzShowSearch]=\"true\" *ngIf=\"item.type == 'cascader'\"\r\n [nzOptions]=\"item.dictList\" [formControlName]=\"item.key\"></nz-cascader>\r\n <nz-date-picker *ngIf=\"item.type == 'date'\" [nzFormat]=\"item.dateFormat ? item.dateFormat : 'yyyy-MM-dd'\"\r\n [nzShowTime]=\"showTime(item)\"\r\n [nzDisabled]=\"formOpts.type == 'view' || item.readonly \"\r\n [formControlName]=\"item.key\"></nz-date-picker>\r\n <nz-range-picker *ngIf=\"item.type == 'dateRange'\" [nzFormat]=\"'yyyy-MM-dd'\" [formControlName]=\"item.key\"\r\n [nzPlaceHolder]=\"['\u5F00\u59CB\u65F6\u95F4', '\u7ED3\u675F\u65F6\u95F4']\"></nz-range-picker>\r\n\r\n <input *ngIf=\"item.type == 'image'\" nz-input [formControlName]=\"item.key\" [hidden]=\"true\"/>\r\n <atr-img-upload *ngIf=\"item.type == 'image'\" [(opts)]=\"item.imageOpts\"\r\n (afterChange)=\"imageUploadChange($event)\"></atr-img-upload>\r\n\r\n <!-- <editor *ngIf=\"item.type == 'editor'\" [formControlName]=\"item.key\" [config]=\"{initialFrameHeight:item.height}\" ></editor>-->\r\n <app-quill-editor *ngIf=\"item.type == 'editor'\" [formControlName]=\"item.key\"\r\n [styles]=\"{height:item.height > 0 ? item.height + 'px' : '250px'}\"></app-quill-editor>\r\n\r\n <ng-container *ngFor=\"let valid of item.validators\">\r\n <ng-container *ngIf=\"atrForm.get(item.key).hasError(valid.type) && (atrForm.get(item.key).dirty )\">\r\n <div style=\"color:red; height: 15px;margin: 0;line-height: 15px;\">{{valid.errorLabel}}</div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <button *ngIf=\"item.button?.isShow\" type=\"button\" class=\"ant-btn ant-btn-primary\"\r\n (click)=\"doAction(item.button,$event)\">\r\n <span>{{item.button.name}}</span></button>\r\n </nz-form-control>\r\n <ng-container *ngTemplateOutlet=\"item.temp\"></ng-container>\r\n </nz-form-item>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n</form>\r\n", styles: [":host ::ng-deep .ant-form-item{margin:0 0 10px}:host ::ng-deep .ant-form-item-label{text-align:left}:host ::ng-deep nz-input-number{width:100%}:host .form-title{height:50px;line-height:50px;font-weight:500;font-size:20px;border-bottom:1px solid #e8e8e8;border-radius:4px 4px 0 0;margin-bottom:14px;margin-top:11px}\n"], components: [{ type: i5.NzFormItemComponent, selector: "nz-form-item", exportAs: ["nzFormItem"] }, { type: i5.NzFormLabelComponent, selector: "nz-form-label", inputs: ["nzFor", "nzRequired", "nzNoColon", "nzTooltipTitle", "nzTooltipIcon"], exportAs: ["nzFormLabel"] }, { type: i5.NzFormControlComponent, selector: "nz-form-control", inputs: ["nzSuccessTip", "nzWarningTip", "nzErrorTip", "nzValidatingTip", "nzExtra", "nzAutoTips", "nzDisableAutoTips", "nzHasFeedback", "nzValidateStatus"], exportAs: ["nzFormControl"] }, { type: i6.NzTreeSelectComponent, selector: "nz-tree-select", inputs: ["nzId", "nzAllowClear", "nzShowExpand", "nzShowLine", "nzDropdownMatchSelectWidth", "nzCheckable", "nzHideUnMatched", "nzShowIcon", "nzShowSearch", "nzDisabled", "nzAsyncData", "nzMultiple", "nzDefaultExpandAll", "nzCheckStrictly", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualHeight", "nzExpandedIcon", "nzNotFoundContent", "nzNodes", "nzOpen", "nzSize", "nzPlaceHolder", "nzDropdownStyle", "nzDropdownClassName", "nzBackdrop", "nzStatus", "nzExpandedKeys", "nzDisplayWith", "nzMaxTagCount", "nzMaxTagPlaceholder", "nzTreeTemplate"], outputs: ["nzOpenChange", "nzCleared", "nzRemoved", "nzExpandChange", "nzTreeClick", "nzTreeCheckBoxChange"], exportAs: ["nzTreeSelect"] }, { type: i7.SelectIconsComponent, selector: "app-select-icons", inputs: ["readonly", "placeholder"] }, { type: i8.NzInputNumberComponent, selector: "nz-input-number", inputs: ["nzSize", "nzMin", "nzMax", "nzParser", "nzPrecision", "nzPrecisionMode", "nzPlaceHolder", "nzStatus", "nzStep", "nzInputMode", "nzId", "nzDisabled", "nzReadOnly", "nzAutoFocus", "nzBorderless", "nzFormatter"], outputs: ["nzBlur", "nzFocus"], exportAs: ["nzInputNumber"] }, { type: i9.NzRadioGroupComponent, selector: "nz-radio-group", inputs: ["nzDisabled", "nzButtonStyle", "nzSize", "nzName"], exportAs: ["nzRadioGroup"] }, { type: i9.NzRadioComponent, selector: "[nz-radio],[nz-radio-button]", inputs: ["nzValue", "nzDisabled", "nzAutoFocus"], exportAs: ["nzRadio"] }, { type: i10.NzSelectComponent, selector: "nz-select", inputs: ["nzId", "nzSize", "nzStatus", "nzOptionHeightPx", "nzOptionOverflowSize", "nzDropdownClassName", "nzDropdownMatchSelectWidth", "nzDropdownStyle", "nzNotFoundContent", "nzPlaceHolder", "nzMaxTagCount", "nzDropdownRender", "nzCustomTemplate", "nzSuffixIcon", "nzClearIcon", "nzRemoveIcon", "nzMenuItemSelectedIcon", "nzTokenSeparators", "nzMaxTagPlaceholder", "nzMaxMultipleCount", "nzMode", "nzFilterOption", "compareWith", "nzAllowClear", "nzBorderless", "nzShowSearch", "nzLoading", "nzAutoFocus", "nzAutoClearSearchValue", "nzServerSearch", "nzDisabled", "nzOpen", "nzBackdrop", "nzOptions", "nzShowArrow"], outputs: ["nzOnSearch", "nzScrollToBottom", "nzOpenChange", "nzBlur", "nzFocus"], exportAs: ["nzSelect"] }, { type: i10.NzOptionComponent, selector: "nz-option", inputs: ["nzLabel", "nzValue", "nzDisabled", "nzHide", "nzCustomContent"], exportAs: ["nzOption"] }, { type: i11.NzCascaderComponent, selector: "nz-cascader, [nz-cascader]", inputs: ["nzOptionRender", "nzShowInput", "nzShowArrow", "nzAllowClear", "nzAutoFocus", "nzChangeOnSelect", "nzDisabled", "nzColumnClassName", "nzExpandTrigger", "nzValueProperty", "nzLabelRender", "nzLabelProperty", "nzNotFoundContent", "nzSize", "nzBackdrop", "nzShowSearch", "nzPlaceHolder", "nzMenuClassName", "nzMenuStyle", "nzMouseEnterDelay", "nzMouseLeaveDelay", "nzStatus", "nzTriggerAction", "nzChangeOn", "nzLoadData", "nzSuffixIcon", "nzExpandIcon", "nzOptions"], outputs: ["nzVisibleChange", "nzSelectionChange", "nzSelect", "nzClear"], exportAs: ["nzCascader"] }, { type: i12.NzDatePickerComponent, selector: "nz-date-picker,nz-week-picker,nz-month-picker,nz-year-picker,nz-range-picker", inputs: ["nzAllowClear", "nzAutoFocus", "nzDisabled", "nzBorderless", "nzInputReadOnly", "nzInline", "nzOpen", "nzDisabledDate", "nzLocale", "nzPlaceHolder", "nzPopupStyle", "nzDropdownClassName", "nzSize", "nzStatus", "nzFormat", "nzDateRender", "nzDisabledTime", "nzRenderExtraFooter", "nzShowToday", "nzMode", "nzShowNow", "nzRanges", "nzDefaultPickerValue", "nzSeparator", "nzSuffixIcon", "nzBackdrop", "nzId", "nzPlacement", "nzShowTime"], outputs: ["nzOnPanelChange", "nzOnCalendarChange", "nzOnOk", "nzOnOpenChange"], exportAs: ["nzDatePicker"] }, { type: i13.UploadComponent, selector: "atr-img-upload", inputs: ["opts", "isEdit", "allowChangSeq"], outputs: ["afterChange", "optsChange"] }, { type: i14.QuillEditorComponent, selector: "app-quill-editor", inputs: ["placeholder", "styles", "value", "readOnly", "needImgSeq"] }], directives: [{ type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.NzFormDirective, selector: "[nz-form]", inputs: ["nzLayout", "nzNoColon", "nzAutoTips", "nzDisableAutoTips", "nzTooltipIcon"], exportAs: ["nzForm"] }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i15.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { type: i16.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i16.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i15.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i17.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i12.NzRangePickerComponent, selector: "nz-range-picker", exportAs: ["nzRangePicker"] }, { type: i16.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
365
380
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AtrFormComponent, decorators: [{
366
381
  type: Component,
367
- args: [{ selector: 'atr-form', template: "<form nz-form [formGroup]=\"atrForm\">\r\n <div nz-row nzGutter=\"8\" nzType=\"flex\" nzAlign=\"top\">\r\n <ng-container *ngFor=\"let item of formOpts.items\">\r\n <div nz-col nzSpan=\"24\" class=\"form-title\" *ngIf=\"item.type == 'title'\" >\r\n {{item.label}}\r\n </div>\r\n <div nz-col [nzSpan]=\"item.span\" *ngIf=\"isShow(item.isHidden,item.operator)\">\r\n\r\n <nz-form-item *ngIf=\"item.type != 'title'\">\r\n <nz-form-label [nzSm]=\"item.lspan\" [nzXs]=\"24\" [nzRequired]=\"isRequired(item)\">{{item.label}}</nz-form-label>\r\n <nz-form-control [nzSm]=\"item.cspan\" [nzXs]=\"24\">\r\n <nz-tree-select *ngIf=\"item.type == 'treeSelect'\"\r\n [nzNodes]=\"item.treeList\"\r\n nzShowSearch=\"true\"\r\n nzHideUnMatched=\"true\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n [nzShowSearch]=\"true\"\r\n [formControlName]=\"item.key\"\r\n [nzAllowClear]=\"!item.notNull\"\r\n [nzMultiple]=\"item.selectUrl.isMultiple\"\r\n [nzDisabled]=\"item.readonly\"\r\n style=\"flex: 1\"\r\n >\r\n </nz-tree-select>\r\n <app-select-icons *ngIf=\"item.type == 'selectIcon'\" nz-input placeholder=\"{{item.placeholder}}\"\r\n [readonly]=\"item.readonly \"\r\n style=\"flex: 1\"\r\n [formControlName]=\"item.key\">\r\n </app-select-icons>\r\n <input *ngIf=\"item.type == 'text'\" nz-input placeholder=\"{{item.placeholder}}\"\r\n [readonly]=\"item.readonly || formOpts.type == 'view'\"\r\n [formControlName]=\"item.key\"/>\r\n <textarea *ngIf=\"item.type == 'textarea'\" nz-input [rows]=\"item.rows\" placeholder=\"{{item.placeholder}}\"\r\n [formControlName]=\"item.key\" [readonly]=\"item.readonly|| formOpts.type == 'view'\"></textarea>\r\n <nz-input-number *ngIf=\"item.type == 'number'\" nzPlaceHolder=\"{{item.placeholder}}\"\r\n [formControlName]=\"item.key\"></nz-input-number>\r\n <nz-radio-group *ngIf=\"item.type == 'radio'\" [formControlName]=\"item.key\">\r\n <label nz-radio *ngFor=\"let o of item.dictList\" [nzValue]=\"o.value\" >{{o.label}}</label>\r\n </nz-radio-group>\r\n <nz-select\r\n *ngIf=\"item.type == 'select'\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n nzAllowClear=\"true\"\r\n [formControlName]=\"item.key\"\r\n nzServerSearch\r\n nzDisabled=\"{{item.readonly|| formOpts.type == 'view'}}\"\r\n >\r\n <nz-option *ngFor=\"let o of dicts[item.dictCode]\" [nzLabel]=\"o.typeName\" [nzValue]=\"o.id\"></nz-option>\r\n </nz-select>\r\n <nz-select\r\n *ngIf=\"item.type == 'selectc'\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n nzAllowClear=\"true\"\r\n [formControlName]=\"item.key\"\r\n nzServerSearch\r\n nzDisabled=\"{{item.readonly|| formOpts.type == 'view'}}\"\r\n >\r\n <nz-option *ngFor=\"let o of item.dictList\" [nzLabel]=\"o.label\" [nzValue]=\"o.value\" > </nz-option>\r\n </nz-select>\r\n <nz-cascader [nzDisabled]=\"item.readonly\" style=\"flex: 1\" [nzAllowClear]=\"!item.notNull\"\r\n [nzValueProperty]=\"'nzValueProperty'\"\r\n [nzShowSearch]=\"true\" *ngIf=\"item.type == 'cascader'\"\r\n [nzOptions]=\"item.dictList\" [formControlName]=\"item.key\" ></nz-cascader>\r\n <nz-date-picker *ngIf=\"item.type == 'date'\" [nzFormat]=\"item.dateFormat ? item.dateFormat : 'yyyy-MM-dd'\"\r\n [nzShowTime]=\"showTime(item)\"\r\n [nzDisabled]=\"formOpts.type == 'view' || item.readonly \"\r\n [formControlName]=\"item.key\"></nz-date-picker>\r\n <nz-range-picker *ngIf=\"item.type == 'dateRange'\" [nzFormat]=\"'yyyy-MM-dd'\" [formControlName]=\"item.key\"\r\n [nzPlaceHolder]=\"['\u5F00\u59CB\u65F6\u95F4', '\u7ED3\u675F\u65F6\u95F4']\"></nz-range-picker>\r\n\r\n <input *ngIf=\"item.type == 'image'\" nz-input [formControlName]=\"item.key\" [hidden]=\"true\"/>\r\n <atr-img-upload *ngIf=\"item.type == 'image'\" [(opts)]=\"item.imageOpts\"\r\n (afterChange)=\"imageUploadChange($event)\"></atr-img-upload>\r\n\r\n <!-- <editor *ngIf=\"item.type == 'editor'\" [formControlName]=\"item.key\" [config]=\"{initialFrameHeight:item.height}\" ></editor>-->\r\n <app-quill-editor *ngIf=\"item.type == 'editor'\" [formControlName]=\"item.key\"\r\n [styles]=\"{height:item.height > 0 ? item.height + 'px' : '250px'}\"></app-quill-editor>\r\n\r\n <ng-container *ngFor=\"let valid of item.validators\">\r\n <ng-container *ngIf=\"atrForm.get(item.key).hasError(valid.type) && (atrForm.get(item.key).dirty )\">\r\n <div style=\"color:red; height: 15px;margin: 0;line-height: 15px;\">{{valid.errorLabel}}</div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <button *ngIf=\"item.button?.isShow\" type=\"button\" class=\"ant-btn ant-btn-primary\"\r\n (click)=\"doAction(item.button,$event)\">\r\n <span>{{item.button.name}}</span></button>\r\n </nz-form-control>\r\n <ng-container *ngTemplateOutlet=\"item.temp\"></ng-container>\r\n </nz-form-item>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n</form>\r\n", styles: [":host ::ng-deep .ant-form-item{margin:0 0 10px}:host ::ng-deep .ant-form-item-label{text-align:left}:host ::ng-deep nz-input-number{width:100%}:host .form-title{height:50px;line-height:50px;font-weight:500;font-size:20px;border-bottom:1px solid #e8e8e8;border-radius:4px 4px 0 0;margin-bottom:14px;margin-top:11px}\n"] }]
368
- }], ctorParameters: function () { return [{ type: i1.ShareService }, { type: i2.FormBuilder }, { type: i3.DictService }, { type: i0.Injector }, { type: undefined, decorators: [{
382
+ args: [{ selector: 'atr-form', template: "<form nz-form [formGroup]=\"atrForm\">\r\n <div nz-row nzGutter=\"8\" nzType=\"flex\" nzAlign=\"top\">\r\n <ng-container *ngFor=\"let item of formOpts.items\">\r\n <div nz-col nzSpan=\"24\" class=\"form-title\" *ngIf=\"item.type == 'title'\">\r\n {{item.label}}\r\n </div>\r\n <div nz-col [nzSpan]=\"item.span\" *ngIf=\"isShow(item.isHidden,item.operator)\">\r\n\r\n <nz-form-item *ngIf=\"item.type != 'title'\">\r\n <nz-form-label [nzSm]=\"item.lspan\" [nzXs]=\"24\" [nzRequired]=\"isRequired(item)\">{{item.label}}</nz-form-label>\r\n <nz-form-control [nzSm]=\"item.cspan\" [nzXs]=\"24\">\r\n <nz-tree-select *ngIf=\"item.type == 'treeSelect'\"\r\n [nzNodes]=\"item.treeList\"\r\n nzShowSearch=\"true\"\r\n nzHideUnMatched=\"true\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n [nzShowSearch]=\"true\"\r\n [formControlName]=\"item.key\"\r\n [nzAllowClear]=\"!item.notNull\"\r\n [nzMultiple]=\"item.selectUrl.isMultiple\"\r\n [nzDisabled]=\"item.readonly\"\r\n style=\"flex: 1\"\r\n >\r\n </nz-tree-select>\r\n <nz-tree-select *ngIf=\"item.type == 'treeSelect'\"\r\n [nzAllowClear]=\"!item.notNull\"\r\n [nzNodes]=\"item.treeList\"\r\n nzShowSearch=\"true\"\r\n nzHideUnMatched=\"true\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n [nzShowSearch]=\"true\"\r\n [formControlName]=\"item.key\"\r\n [nzMultiple]=\"item.selectUrl.isMultiple\"\r\n [nzDisabled]=\"item.readonly\" style=\"flex: 1\"\r\n >\r\n </nz-tree-select>\r\n <app-select-icons *ngIf=\"item.type == 'selectIcon'\" nz-input placeholder=\"{{item.placeholder}}\"\r\n [readonly]=\"item.readonly \"\r\n style=\"flex: 1\"\r\n [formControlName]=\"item.key\">\r\n </app-select-icons>\r\n <input *ngIf=\"item.type == 'text'\" nz-input placeholder=\"{{item.placeholder}}\"\r\n [readonly]=\"item.readonly || formOpts.type == 'view'\"\r\n [formControlName]=\"item.key\"/>\r\n <textarea *ngIf=\"item.type == 'textarea'\" nz-input [rows]=\"item.rows\" placeholder=\"{{item.placeholder}}\"\r\n [formControlName]=\"item.key\" [readonly]=\"item.readonly|| formOpts.type == 'view'\"></textarea>\r\n <nz-input-number *ngIf=\"item.type == 'number'\" nzPlaceHolder=\"{{item.placeholder}}\"\r\n [formControlName]=\"item.key\"></nz-input-number>\r\n <nz-radio-group *ngIf=\"item.type == 'radio'\" [formControlName]=\"item.key\">\r\n <label nz-radio *ngFor=\"let o of item.dictList\" [nzValue]=\"o.value\">{{o.label}}</label>\r\n </nz-radio-group>\r\n <nz-select\r\n *ngIf=\"item.type == 'select'\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n nzAllowClear=\"true\"\r\n [formControlName]=\"item.key\"\r\n nzServerSearch\r\n nzDisabled=\"{{item.readonly|| formOpts.type == 'view'}}\"\r\n >\r\n <nz-option *ngFor=\"let o of dicts[item.dictCode]\" [nzLabel]=\"o.typeName\" [nzValue]=\"o.id\"></nz-option>\r\n </nz-select>\r\n <nz-select\r\n *ngIf=\"item.type == 'selectc'\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n nzAllowClear=\"true\"\r\n [formControlName]=\"item.key\"\r\n nzServerSearch\r\n nzDisabled=\"{{item.readonly|| formOpts.type == 'view'}}\"\r\n >\r\n <nz-option *ngFor=\"let o of item.dictList\" [nzLabel]=\"o.label\" [nzValue]=\"o.value\"></nz-option>\r\n </nz-select>\r\n <nz-cascader [nzDisabled]=\"item.readonly\" style=\"flex: 1\" [nzAllowClear]=\"!item.notNull\"\r\n [nzValueProperty]=\"'nzValueProperty'\"\r\n [nzShowSearch]=\"true\" *ngIf=\"item.type == 'cascader'\"\r\n [nzOptions]=\"item.dictList\" [formControlName]=\"item.key\"></nz-cascader>\r\n <nz-date-picker *ngIf=\"item.type == 'date'\" [nzFormat]=\"item.dateFormat ? item.dateFormat : 'yyyy-MM-dd'\"\r\n [nzShowTime]=\"showTime(item)\"\r\n [nzDisabled]=\"formOpts.type == 'view' || item.readonly \"\r\n [formControlName]=\"item.key\"></nz-date-picker>\r\n <nz-range-picker *ngIf=\"item.type == 'dateRange'\" [nzFormat]=\"'yyyy-MM-dd'\" [formControlName]=\"item.key\"\r\n [nzPlaceHolder]=\"['\u5F00\u59CB\u65F6\u95F4', '\u7ED3\u675F\u65F6\u95F4']\"></nz-range-picker>\r\n\r\n <input *ngIf=\"item.type == 'image'\" nz-input [formControlName]=\"item.key\" [hidden]=\"true\"/>\r\n <atr-img-upload *ngIf=\"item.type == 'image'\" [(opts)]=\"item.imageOpts\"\r\n (afterChange)=\"imageUploadChange($event)\"></atr-img-upload>\r\n\r\n <!-- <editor *ngIf=\"item.type == 'editor'\" [formControlName]=\"item.key\" [config]=\"{initialFrameHeight:item.height}\" ></editor>-->\r\n <app-quill-editor *ngIf=\"item.type == 'editor'\" [formControlName]=\"item.key\"\r\n [styles]=\"{height:item.height > 0 ? item.height + 'px' : '250px'}\"></app-quill-editor>\r\n\r\n <ng-container *ngFor=\"let valid of item.validators\">\r\n <ng-container *ngIf=\"atrForm.get(item.key).hasError(valid.type) && (atrForm.get(item.key).dirty )\">\r\n <div style=\"color:red; height: 15px;margin: 0;line-height: 15px;\">{{valid.errorLabel}}</div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <button *ngIf=\"item.button?.isShow\" type=\"button\" class=\"ant-btn ant-btn-primary\"\r\n (click)=\"doAction(item.button,$event)\">\r\n <span>{{item.button.name}}</span></button>\r\n </nz-form-control>\r\n <ng-container *ngTemplateOutlet=\"item.temp\"></ng-container>\r\n </nz-form-item>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n</form>\r\n", styles: [":host ::ng-deep .ant-form-item{margin:0 0 10px}:host ::ng-deep .ant-form-item-label{text-align:left}:host ::ng-deep nz-input-number{width:100%}:host .form-title{height:50px;line-height:50px;font-weight:500;font-size:20px;border-bottom:1px solid #e8e8e8;border-radius:4px 4px 0 0;margin-bottom:14px;margin-top:11px}\n"] }]
383
+ }], ctorParameters: function () { return [{ type: i1.ShareService }, { type: i2.HttpService }, { type: i3.FormBuilder }, { type: i4.DictService }, { type: i0.Injector }, { type: undefined, decorators: [{
369
384
  type: Inject,
370
385
  args: [LOCALE_ID]
371
386
  }] }]; }, propDecorators: { formOpts: [{
@@ -373,4 +388,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
373
388
  }], formAction: [{
374
389
  type: Output
375
390
  }] } });
376
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Zvcm0vZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Zvcm0vZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFVLEtBQUssRUFBWSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUF5QixXQUFXLEVBQUUsVUFBVSxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRzNDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBb0QsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUWxILE1BQU0sT0FBTyxnQkFBZ0I7SUFPM0IsMkNBQTJDO0lBQzNDLFlBQXFCLFlBQXlCLEVBQ3BDLEVBQWUsRUFBVSxXQUF3QixFQUFVLFFBQWtCLEVBQTZCLE1BQWM7UUFEN0csaUJBQVksR0FBWixZQUFZLENBQWE7UUFDcEMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUE2QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBUGxJLFVBQUssR0FBTyxFQUFFLENBQUM7UUFHTCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUtwRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxD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Q0FBQzs2QkFDaEU7NEJBQ0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7eUJBQzFCO3FCQUNGO2lCQUNGO3FCQUFNO29CQUNMLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2lCQUM1QjthQUNGO1NBQ0Y7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFDRCxRQUFRLENBQUMsSUFBUTtRQUNmLElBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksWUFBWSxFQUFDO1lBQ3JELE9BQU8sS0FBSyxDQUFBO1NBQ2I7UUFDRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzdCLElBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQztZQUN0QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7OEdBcFZVLGdCQUFnQiw0SEFTc0UsU0FBUztrR0FUL0YsZ0JBQWdCLHlIQ2Q3Qix1M0xBK0ZBOzRGRGpGYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsVUFBVTs7MEJBYXNFLE1BQU07MkJBQUMsU0FBUzs0Q0FMakcsUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIEluamVjdG9yLCBJbmplY3QsIExPQ0FMRV9JRCwgT3V0cHV0LCBFdmVudEVtaXR0ZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzLCBWYWxpZGF0b3JGbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge3RlbHBob25lVmFsaWRhdG9yfSBmcm9tICcuLi92YWxpZGF0b3JzL2F0ci12YWxpZHRvcnMnO1xyXG5pbXBvcnQge2Zvcm1hdERhdGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFNoYXJlU2VydmljZSB9IGZyb20gJy4uL3NoYXJlLnNlcnZpY2UnO1xyXG5pbXBvcnQge2Vudmlyb25tZW50fSBmcm9tIFwibmctem9ycm8tYW50ZC9jb3JlL2Vudmlyb25tZW50c1wiO1xyXG5pbXBvcnQge2F0cl9zdGF0aWNfZGF0YXMsIEF0ckZvcm1EZXRhaWwsIEF0ckZvcm1PcHQsIEZvcm1BY3Rpb24sIGZvcm1CdXR0b259IGZyb20gXCIuLi8uLi8uLi9jb3JlL2Jhc2UvYXRyLWNvbW1vblwiO1xyXG5pbXBvcnQge0RpY3RTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9kaWN0L2RpY3Quc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhdHItZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm0uY29tcG9uZW50Lmxlc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXRyRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGRpY3RzOmFueSA9IHt9O1xyXG4gIGF0ckZvcm06IEZvcm1Hcm91cCB8IGFueTtcclxuICBASW5wdXQoKSBmb3JtT3B0czogQXRyRm9ybU9wdHxhbnk7XHJcbiAgQE91dHB1dCgpIGZvcm1BY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1BY3Rpb24+KCk7XHJcblxyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuICBjb25zdHJ1Y3RvciggcHJpdmF0ZSBzaGFyZVNlcnZpY2U6U2hhcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgZGljdFNlcnZpY2U6IERpY3RTZXJ2aWNlLCBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgbG9jYWxlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuYXRyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe30pO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRMYXlvdXQoaXRlbTphbnkpIHtcclxuICAgIGlmICghaXRlbS5sc3Bhbikge1xyXG4gICAgICBpdGVtLmxzcGFuID0gMjQ7XHJcbiAgICB9XHJcbiAgICBpZiAoIWl0ZW0uY3NwYW4pIHtcclxuICAgICAgaXRlbS5jc3BhbiA9IDI0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG9BY3Rpb24oaXRlbTogZm9ybUJ1dHRvbiwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXHJcbiAgICB9XHJcbiAgICBsZXQgYWN0aW9uOiBGb3JtQWN0aW9uID0ge1xyXG4gICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgIGNvZGU6IGl0ZW0uY29kZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmZvcm1BY3Rpb24uZW1pdChhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgc2V0VmFsdWUoa2V5OnN0cmluZywgdmFsdWU6YW55KSB7XHJcbiAgICB0aGlzLmF0ckZvcm0uZ2V0KGtleSk/LnNldFZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG5cclxuICBnZXREaWNMaXN0KGl0ZW06YW55KSB7XHJcbiAgICB0aGlzLnNoYXJlU2VydmljZS5nZXREaWNMaXN0KGl0ZW0pLnN1YnNjcmliZShyZXMgPT57XHJcbiAgICAgICAgaWYocmVzLnN0YXR1cyA9PSAyMDAgJiYgcmVzLml0ZW0pe1xyXG4gICAgICAgICAgICBpdGVtID0gcmVzLml0ZW1cclxuICAgICAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG5cclxuIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtT3B0cyAmJiB0aGlzLmZvcm1PcHRzLml0ZW1zKSB7XHJcbiAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5mb3JtT3B0cy5pdGVtcykge1xyXG4gICAgICAgIC8vIHRoaXMuYXRyRm9ybS5hZGRDb250cm9sKGl0ZW0ua2V5LCBuZXcgRm9ybUNvbnRyb2woKSk7XHJcbiAgICAgICAgdGhpcy5yZXNldExheW91dChpdGVtKVxyXG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuZm9ybU9wdHMudHlwZSA9PSAnYWRkJyA/IGl0ZW0uZGVmYXVsdFZhbHVlIDogaXRlbS52YWx1ZTtcclxuICAgICAgICBjb25zb2xlLmxvZyh2YWx1ZSk7XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSBcInNlbGVjdFwiKSB7XHJcbiAgICAgICAgICB0aGlzLmdldERpY3RWYWx1ZShpdGVtLmRpY3RDb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSAnc2VsZWN0YycpIHtcclxuICAgICAgICAgIGlmICghaXRlbS5kaWN0TGlzdCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0RGljTGlzdChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSBcInRleHRhcmVhXCIgJiYgIWl0ZW0ucm93cylcclxuICAgICAgICAgIGl0ZW0ucm93cyA9IDU7XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSBcImltYWdlXCIpIHtcclxuICAgICAgICAgIGl0ZW0uaW1hZ2VPcHRzLmtleSA9IGl0ZW0ua2V5XHJcbiAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgbGV0IGltYWdlczphbnkgPSBbXTtcclxuICAgICAgICAgICAgbGV0IGxpc3QgPSB2YWx1ZS5zcGxpdChcIixcIik7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBvZiBsaXN0KSB7XHJcbiAgICAgICAgICAgICAgaW1hZ2VzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAga2V5OiBrZXksXHJcbiAgICAgICAgICAgICAgICB1aWQ6IFwiLTFcIixcclxuICAgICAgICAgICAgICAgIHVybDogYXRyX3N0YXRpY19kYXRhcy5PU1NfVVJMICsga2V5XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpdGVtLmltYWdlT3B0cy5pbWFnZUxpc3QgPSBpbWFnZXM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT0gJ2VkaXRvcicpIHtcclxuICAgICAgICAgIGlmICghdmFsdWUpIHZhbHVlID0gXCJcIlxyXG4gICAgICAgICAgaWYgKCFpdGVtLmhlaWdodClcclxuICAgICAgICAgICAgaXRlbS5oZWlnaHQgPSAzMDBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghaXRlbS5zcGFuKVxyXG4gICAgICAgICAgaXRlbS5zcGFuID0gOFxyXG4gICAgICAgIGlmKHR5cGVvZiBpdGVtLmlzUmVxdWlyZWQgIT0gJ3N0cmluZycpe1xyXG4gICAgICAgICAgaXRlbS5pc1JlcXVpcmVkID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHRlbXBWYWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcbiAgICAgICAgaWYgKGl0ZW0udmFsaWRhdG9ycykge1xyXG4gICAgICAgICAgZm9yIChsZXQgdmFsaWRhdG9yIG9mIGl0ZW0udmFsaWRhdG9ycykge1xyXG4gICAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT0gXCJyZXF1aXJlZFwiKSB7XHJcbiAgICAgICAgICAgICAgaXRlbS5pc1JlcXVpcmVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgIHRlbXBWYWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0b3IudHlwZSA9PSBcImVtYWlsXCIpIHtcclxuICAgICAgICAgICAgICB0ZW1wVmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMuZW1haWwpXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsaWRhdG9yLnR5cGUgPT0gXCJtYXhsZW5ndGhcIikge1xyXG4gICAgICAgICAgICAgIHRlbXBWYWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodmFsaWRhdG9yLm1heGxlbmd0aCA/IHZhbGlkYXRvci5tYXhsZW5ndGggOiAxKSlcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0b3IudHlwZSA9PSBcIm1pbmxlbmd0aFwiKSB7XHJcbiAgICAgICAgICAgICAgdGVtcFZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh2YWxpZGF0b3IubWlubGVuZ3RoID8gdmFsaWRhdG9yLm1pbmxlbmd0aCA6IDEpKVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbGlkYXRvci50eXBlID09IFwidGVscGhvbmVcIikge1xyXG4gICAgICAgICAgICAgIHRlbXBWYWxpZGF0b3JzLnB1c2godGVscGhvbmVWYWxpZGF0b3IoKSlcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0b3IudHlwZSA9PSBcInBhdHRlcm5cIikge1xyXG4gICAgICAgICAgICAgIHRlbXBWYWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKHZhbGlkYXRvci5wYXR0ZXJuVmFsdWUpKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBkZWZhdWx0VmFsdWUgPSB7dmFsdWU6IHZhbHVlICE9IHVuZGVmaW5lZCA/IHZhbHVlIDogbnVsbCwgZGlzYWJsZWQ6IGl0ZW0uZGlzYWJsZSA/IGl0ZW0uZGlzYWJsZSA6IGZhbHNlfVxyXG4gICAgICAgIGlmICh0ZW1wVmFsaWRhdG9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLmF0ckZvcm0uYWRkQ29udHJvbChpdGVtLmtleSwgbmV3IEZvcm1Db250cm9sKGRlZmF1bHRWYWx1ZSwgdGVtcFZhbGlkYXRvcnMpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5hdHJGb3JtLmFkZENvbnRyb2woaXRlbS5rZXksIG5ldyBGb3JtQ29udHJvbChkZWZhdWx0VmFsdWUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc29sZS5sb2coXCIgdGhpcy5hdHJGb3JtXCIsIHRoaXMuYXRyRm9ybSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBhcmUodmFsdWU6YW55LCBvcGVyYXRvcjphbnksIHRhcmdldDphbnkpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1JpZ2h0ID0gZmFsc2U7XHJcbiAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XHJcbiAgICAgIGNhc2UgJ2VxJyA6XHJcbiAgICAgICAgaWYgKHZhbHVlID09IHRhcmdldCkge1xyXG4gICAgICAgICAgaXNSaWdodCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdnaCcgOlxyXG4gICAgICAgIGlmICh2YWx1ZSA+PSB0YXJnZXQpIHtcclxuICAgICAgICAgIGlzUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbm90RW1wdHknOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGlzUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZW1wdHknOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICBpc1JpZ2h0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQgOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBpc1JpZ2h0O1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJc1Nob3dCYXNlKG9wOmFueSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzU2hvdyA9IGZhbHNlO1xyXG4gICAgaWYgKG9wLmxlbmd0aCA+IDEpIHtcclxuICAgICAgbGV0IHZhbHVlID0gdGhpcy5hdHJGb3JtLmdldChvcFswXSkudmFsdWU7XHJcbiAgICAgIGlzU2hvdyA9IHRoaXMuY29tcGFyZSh2YWx1ZSwgb3BbMV0sIG9wWzJdKVxyXG4gICAgfSBlbHNlXHJcbiAgICAgIGlzU2hvdyA9IGZhbHNlO1xyXG5cclxuICAgIHJldHVybiBpc1Nob3c7XHJcbiAgfVxyXG4gIGlzUmVxdWlyZWQoaXRlbTpBdHJGb3JtRGV0YWlsKXtcclxuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcclxuICAgIGxldCBpc1JlcXVpcmVkID0gaXRlbS5pc1JlcXVpcmVkO1xyXG4gICAgbGV0IHR5cGUgPSB0eXBlb2YgIGlzUmVxdWlyZWQ7XHJcbiAgICBpZih0eXBlID09IFwiYm9vbGVhblwiKXtcclxuICAgICAgcmV0dXJuIGlzUmVxdWlyZWRcclxuICAgIH0gZWxzZSBpZih0eXBlID09IFwic3RyaW5nXCIpe1xyXG5cclxuICAgICAgcmVzdWx0ID0gdGhpcy5pc1Nob3coZmFsc2UsaXNSZXF1aXJlZCk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhcImlzUmVxdWlyZWRcIixyZXN1bHQpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbiAgaXNTaG93KGlzSGlkZGVuOmFueSxvcGVyYXRvcjphbnkpIHtcclxuICAgIGlmIChpc0hpZGRlbikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBsZXQgaXNTaG93ID0gZmFsc2U7XHJcbiAgICBpZiAoIW9wZXJhdG9yIHx8IG9wZXJhdG9yID09IG51bGwgfHwgb3BlcmF0b3IgPT0gXCJcIikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAob3BlcmF0b3IuaW5kZXhPZignJiYnKSA+IDApIHtcclxuICAgICAgLy8gYXxlcXxiICYmY3xlcXxkXHJcbiAgICAgIGNvbnN0IG9wcyA9IG9wZXJhdG9yLnNwbGl0KCcmJicpO1xyXG4gICAgICBpZiAob3BzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpc1Nob3cgPSB0cnVlXHJcbiAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tJc1Nob3dCYXNlKG9wc1tpXS5zcGxpdCgnfCcpKSkge1xyXG4gICAgICAgICAgICBpc1Nob3cgPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKG9wZXJhdG9yLmluZGV4T2YoJ3x8JykgPiAwKSB7XHJcbiAgICAgIC8vIGF8ZXF8Ynx8Y3xlcXxkXHJcbiAgICAgIGNvbnN0IG9wcyA9IG9wZXJhdG9yLnNwbGl0KCcmJicpO1xyXG4gICAgICBpZiAob3BzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaXNTaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAodGhpcy5jaGVja0lzU2hvd0Jhc2Uob3BzW2ldLnNwbGl0KCd8JykpKSB7XHJcbiAgICAgICAgICAgIGlzU2hvdyA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IG9wID0gb3BlcmF0b3Iuc3BsaXQoXCJ8XCIpO1xyXG4gICAgICBpc1Nob3cgPSB0aGlzLmNoZWNrSXNTaG93QmFzZShvcCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNTaG93O1xyXG4gIH1cclxuXHJcbiAgZ2V0RGljdFZhbHVlKGNvZGU6IHN0cmluZykge1xyXG4gICAgLy8gY29uc29sZS5sb2coXCI5OTk5XCIpO1xyXG4gICAgdGhpcy5kaWN0U2VydmljZS5nZXREaWN0Qnljb2RlKGNvZGUpLnN1YnNjcmliZShcclxuICAgICAgcmVzdWx0ID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdCAhPSBudWxsKVxyXG4gICAgICAgICAgdGhpcy5kaWN0c1tjb2RlXSA9IHJlc3VsdC5kaWN0cztcclxuICAgICAgfSxcclxuICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuZGljdHNbY29kZV0gPSBbXTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgaW1hZ2VVcGxvYWRDaGFuZ2UoZTogYW55KSB7XHJcbiAgICBpZiAoZS5rZXkpIHtcclxuICAgICAgdGhpcy5hdHJGb3JtLmdldChlLmtleSkuc2V0VmFsdWUoZS52YWx1ZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRGb3JtKCkge1xyXG4gICAgLy8gdGhpcy5hdHJGb3JtLnJlc2V0KCk7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcImVkaXRvciByZXNldFwiKVxyXG4gICAgaWYgKHRoaXMuZm9ybU9wdHMgJiYgdGhpcy5mb3JtT3B0cy5pdGVtcykge1xyXG4gICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuZm9ybU9wdHMuaXRlbXMpIHtcclxuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmZvcm1PcHRzLnR5cGUgPT0gJ2FkZCcgPyBpdGVtLmRlZmF1bHRWYWx1ZSA6IGl0ZW0udmFsdWU7XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSBcImltYWdlXCIpIHtcclxuICAgICAgICAgIGl0ZW0uaW1hZ2VPcHRzLmtleSA9IGl0ZW0ua2V5XHJcbiAgICAgICAgICBsZXQgaW1hZ2VzOmFueSA9IFtdO1xyXG4gICAgICAgICAgaWYgKCF2YWx1ZSkgdmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgbGV0IGxpc3QgPSB2YWx1ZS5zcGxpdChcIixcIik7XHJcbiAgICAgICAgICBmb3IgKGxldCBrZXkgb2YgbGlzdCkge1xyXG4gICAgICAgICAgICBpZiAoa2V5ICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICBpbWFnZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBrZXk6IGtleSxcclxuICAgICAgICAgICAgICAgIHVpZDogXCItMVwiLFxyXG4gICAgICAgICAgICAgICAgdXJsOiBhdHJfc3RhdGljX2RhdGFzLk9TU19VUkwgKyBrZXlcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpdGVtLmltYWdlT3B0cy5pbWFnZUxpc3QgPSBpbWFnZXM7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhpbWFnZXMpXHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT0gXCJlZGl0b3JcIikge1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coXCJlZGl0b3JcIilcclxuICAgICAgICAgIGlmICghdmFsdWUpIHZhbHVlID0gXCJcIlxyXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09IFwic2VsZWN0XCIgJiYgdmFsdWUgPT0gXCJcIikge1xyXG4gICAgICAgICAgdmFsdWUgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5hdHJGb3JtLmdldChpdGVtLmtleSkuc2V0VmFsdWUodmFsdWUgIT0gdW5kZWZpbmVkID8gdmFsdWUgOiBudWxsKVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAoY29uc3QgaSBpbiB0aGlzLmF0ckZvcm0uY29udHJvbHMpIHtcclxuICAgICAgICB0aGlzLmF0ckZvcm0uY29udHJvbHNbaV0ubWFya0FzVW50b3VjaGVkKCk7XHJcbiAgICAgICAgdGhpcy5hdHJGb3JtLmNvbnRyb2xzW2ldLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgdGhpcy5hdHJGb3JtLmNvbnRyb2xzW2ldLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdldEZvcm1WYWlsZCgpOiBhbnkge1xyXG4gICAgbGV0IG9iajphbnkgPSB7XHJcbiAgICAgIGlzVmFsaWQ6IGZhbHNlLFxyXG4gICAgICBtb2RlOiB0aGlzLmZvcm1PcHRzLnR5cGUsXHJcbiAgICAgIHZhbHVlOiB7fVxyXG4gICAgfTtcclxuICAgIGZvciAoY29uc3QgaSBpbiB0aGlzLmF0ckZvcm0uY29udHJvbHMpIHtcclxuICAgICAgdGhpcy5hdHJGb3JtLmNvbnRyb2xzW2ldLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHRoaXMuYXRyRm9ybS5jb250cm9sc1tpXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgICBvYmouaXNWYWxpZCA9IHRoaXMuYXRyRm9ybS52YWxpZFxyXG4gICAgbGV0IHZhbHVlID0gdGhpcy5hdHJGb3JtLnZhbHVlO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModmFsdWUpKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGtleSk7XHJcbiAgICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIHZhbHVlW2tleV0gIT0gbnVsbCAmJiB2YWx1ZVtrZXldICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmICh2YWx1ZVtrZXldIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLmZvcm1PcHRzLml0ZW1zKSB7XHJcbiAgICAgICAgICAgIGlmKGl0ZW0ua2V5ICE9IGtleSl7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoaXRlbS5kYXRlRm9ybWF0KXtcclxuICAgICAgICAgICAgICBvYmoudmFsdWVba2V5XSA9IGZvcm1hdERhdGUoKHZhbHVlW2tleV0gYXMgRGF0ZSksIGl0ZW0uZGF0ZUZvcm1hdCwgdGhpcy5sb2NhbGUpO1xyXG4gICAgICAgICAgICB9ZWxzZSBpZiAoaXRlbS50eXBlID09ICdkYXRlJykge1xyXG4gICAgICAgICAgICAgIG9iai52YWx1ZVtrZXldID0gZm9ybWF0RGF0ZSgodmFsdWVba2V5XSBhcyBEYXRlKSwgJ3l5eXktTU0tZGQgMDA6MDA6MDAnLCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09ICdkYXRlVGltZScpIHtcclxuICAgICAgICAgICAgICBvYmoudmFsdWVba2V5XSA9IGZvcm1hdERhdGUoKHZhbHVlW2tleV0gYXMgRGF0ZSksICd5eXl5LU1NLWRkIEhIOm1tOnNzJywgdGhpcy5sb2NhbGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0gZWxzZSBpZih2YWx1ZVtrZXldIGluc3RhbmNlb2YgQXJyYXkpe1xyXG4gICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLmZvcm1PcHRzLml0ZW1zKSB7XHJcbiAgICAgICAgICAgIGlmKGl0ZW0ua2V5ICE9IGtleSl7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGRhdGVGb3JtYXQgPSBpdGVtLmRhdGVGb3JtYXQgPyBpdGVtLmRhdGVGb3JtYXQgOiAneXl5eS1NTS1kZCAwMDowMDowMCc7XHJcbiAgICAgICAgICAgIGlmKGl0ZW0udHlwZSA9PSAnZGF0ZVJhbmdlJyl7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGVBcnI6YW55ID0gW107XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgZCBvZiB2YWx1ZVtrZXldKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRlQXJyLnB1c2goZm9ybWF0RGF0ZSgoZCBhcyBEYXRlKSwgZGF0ZUZvcm1hdCwgdGhpcy5sb2NhbGUpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSBkYXRlQXJyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG9iai52YWx1ZVtrZXldID0gdmFsdWVba2V5XVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcbiAgc2hvd1RpbWUoaXRlbTphbnkpe1xyXG4gICAgaWYoIWl0ZW0uZGF0ZUZvcm1hdCB8fCBpdGVtLmRhdGVGb3JtYXQgPT0gXCJ5eXl5LU1NLWRkXCIpe1xyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuICAgIGxldCBmb3JtYXQgPSBpdGVtLmRhdGVGb3JtYXQ7XHJcbiAgICBpZihmb3JtYXQuaW5kZXhPZihcIkhIXCIpKXtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZihmb3JtYXQuaW5kZXhPZihcIm1tXCIpKXtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZihmb3JtYXQuaW5kZXhPZihcInNzXCIpKXtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIG56LWZvcm0gW2Zvcm1Hcm91cF09XCJhdHJGb3JtXCI+XHJcbiAgPGRpdiBuei1yb3cgbnpHdXR0ZXI9XCI4XCIgbnpUeXBlPVwiZmxleFwiIG56QWxpZ249XCJ0b3BcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZm9ybU9wdHMuaXRlbXNcIj5cclxuICAgICAgPGRpdiBuei1jb2wgbnpTcGFuPVwiMjRcIiBjbGFzcz1cImZvcm0tdGl0bGVcIiAqbmdJZj1cIml0ZW0udHlwZSA9PSAndGl0bGUnXCIgPlxyXG4gICAgICAgIHt7aXRlbS5sYWJlbH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IG56LWNvbCBbbnpTcGFuXT1cIml0ZW0uc3BhblwiICpuZ0lmPVwiaXNTaG93KGl0ZW0uaXNIaWRkZW4saXRlbS5vcGVyYXRvcilcIj5cclxuXHJcbiAgICAgICAgPG56LWZvcm0taXRlbSAqbmdJZj1cIml0ZW0udHlwZSAhPSAndGl0bGUnXCI+XHJcbiAgICAgICAgICA8bnotZm9ybS1sYWJlbCBbbnpTbV09XCJpdGVtLmxzcGFuXCIgW256WHNdPVwiMjRcIiBbbnpSZXF1aXJlZF09XCJpc1JlcXVpcmVkKGl0ZW0pXCI+e3tpdGVtLmxhYmVsfX08L256LWZvcm0tbGFiZWw+XHJcbiAgICAgICAgICA8bnotZm9ybS1jb250cm9sIFtuelNtXT1cIml0ZW0uY3NwYW5cIiBbbnpYc109XCIyNFwiPlxyXG4gICAgICAgICAgICA8bnotdHJlZS1zZWxlY3QgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ3RyZWVTZWxlY3QnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW256Tm9kZXNdPVwiaXRlbS50cmVlTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG56U2hvd1NlYXJjaD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuekhpZGVVbk1hdGNoZWQ9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnpQbGFjZUhvbGRlcj1cInt7aXRlbS5wbGFjZWhvbGRlcn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW256U2hvd1NlYXJjaF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuekFsbG93Q2xlYXJdPVwiIWl0ZW0ubm90TnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuek11bHRpcGxlXT1cIml0ZW0uc2VsZWN0VXJsLmlzTXVsdGlwbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbnpEaXNhYmxlZF09XCJpdGVtLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmbGV4OiAxXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L256LXRyZWUtc2VsZWN0PlxyXG4gICAgICAgICAgICA8YXBwLXNlbGVjdC1pY29ucyAqbmdJZj1cIml0ZW0udHlwZSA9PSAnc2VsZWN0SWNvbidcIiBuei1pbnB1dCBwbGFjZWhvbGRlcj1cInt7aXRlbS5wbGFjZWhvbGRlcn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIml0ZW0ucmVhZG9ubHkgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmbGV4OiAxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiPlxyXG4gICAgICAgICAgICA8L2FwcC1zZWxlY3QtaWNvbnM+XHJcbiAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cIml0ZW0udHlwZSA9PSAndGV4dCdcIiBuei1pbnB1dCBwbGFjZWhvbGRlcj1cInt7aXRlbS5wbGFjZWhvbGRlcn19XCJcclxuICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJpdGVtLnJlYWRvbmx5IHx8IGZvcm1PcHRzLnR5cGUgPT0gJ3ZpZXcnXCJcclxuICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIi8+XHJcbiAgICAgICAgICAgIDx0ZXh0YXJlYSAqbmdJZj1cIml0ZW0udHlwZSA9PSAndGV4dGFyZWEnXCIgbnotaW5wdXQgW3Jvd3NdPVwiaXRlbS5yb3dzXCIgcGxhY2Vob2xkZXI9XCJ7e2l0ZW0ucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCIgW3JlYWRvbmx5XT1cIml0ZW0ucmVhZG9ubHl8fCBmb3JtT3B0cy50eXBlID09ICd2aWV3J1wiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgIDxuei1pbnB1dC1udW1iZXIgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ251bWJlcidcIiBuelBsYWNlSG9sZGVyPVwie3tpdGVtLnBsYWNlaG9sZGVyfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIj48L256LWlucHV0LW51bWJlcj5cclxuICAgICAgICAgICAgPG56LXJhZGlvLWdyb3VwICpuZ0lmPVwiaXRlbS50eXBlID09ICdyYWRpbydcIiBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIG56LXJhZGlvICpuZ0Zvcj1cImxldCBvIG9mIGl0ZW0uZGljdExpc3RcIiBbbnpWYWx1ZV09XCJvLnZhbHVlXCIgPnt7by5sYWJlbH19PC9sYWJlbD5cclxuICAgICAgICAgICAgPC9uei1yYWRpby1ncm91cD5cclxuICAgICAgICAgICAgPG56LXNlbGVjdFxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS50eXBlID09ICdzZWxlY3QnXCJcclxuICAgICAgICAgICAgICBuelBsYWNlSG9sZGVyPVwie3tpdGVtLnBsYWNlaG9sZGVyfX1cIlxyXG4gICAgICAgICAgICAgIG56QWxsb3dDbGVhcj1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIlxyXG4gICAgICAgICAgICAgIG56U2VydmVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgbnpEaXNhYmxlZD1cInt7aXRlbS5yZWFkb25seXx8IGZvcm1PcHRzLnR5cGUgPT0gJ3ZpZXcnfX1cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG56LW9wdGlvbiAqbmdGb3I9XCJsZXQgbyBvZiBkaWN0c1tpdGVtLmRpY3RDb2RlXVwiIFtuekxhYmVsXT1cIm8udHlwZU5hbWVcIiBbbnpWYWx1ZV09XCJvLmlkXCI+PC9uei1vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbnotc2VsZWN0PlxyXG4gICAgICAgICAgICA8bnotc2VsZWN0XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ3NlbGVjdGMnXCJcclxuICAgICAgICAgICAgICBuelBsYWNlSG9sZGVyPVwie3tpdGVtLnBsYWNlaG9sZGVyfX1cIlxyXG4gICAgICAgICAgICAgIG56QWxsb3dDbGVhcj1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIlxyXG4gICAgICAgICAgICAgIG56U2VydmVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgbnpEaXNhYmxlZD1cInt7aXRlbS5yZWFkb25seXx8IGZvcm1PcHRzLnR5cGUgPT0gJ3ZpZXcnfX1cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG56LW9wdGlvbiAqbmdGb3I9XCJsZXQgbyBvZiBpdGVtLmRpY3RMaXN0XCIgW256TGFiZWxdPVwiby5sYWJlbFwiIFtuelZhbHVlXT1cIm8udmFsdWVcIiA+IDwvbnotb3B0aW9uPlxyXG4gICAgICAgICAgICA8L256LXNlbGVjdD5cclxuICAgICAgICAgICAgPG56LWNhc2NhZGVyIFtuekRpc2FibGVkXT1cIml0ZW0ucmVhZG9ubHlcIiBzdHlsZT1cImZsZXg6IDFcIiBbbnpBbGxvd0NsZWFyXT1cIiFpdGVtLm5vdE51bGxcIlxyXG4gICAgICAgICAgICAgICAgW256VmFsdWVQcm9wZXJ0eV09XCInbnpWYWx1ZVByb3BlcnR5J1wiXHJcbiAgICAgICAgICAgICAgICBbbnpTaG93U2VhcmNoXT1cInRydWVcIiAqbmdJZj1cIml0ZW0udHlwZSA9PSAnY2FzY2FkZXInXCJcclxuICAgICAgICAgICAgICAgIFtuek9wdGlvbnNdPVwiaXRlbS5kaWN0TGlzdFwiIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIiA+PC9uei1jYXNjYWRlcj5cclxuICAgICAgICAgICAgPG56LWRhdGUtcGlja2VyICpuZ0lmPVwiaXRlbS50eXBlID09ICdkYXRlJ1wiIFtuekZvcm1hdF09XCJpdGVtLmRhdGVGb3JtYXQgPyBpdGVtLmRhdGVGb3JtYXQgOiAneXl5eS1NTS1kZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW256U2hvd1RpbWVdPVwic2hvd1RpbWUoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW256RGlzYWJsZWRdPVwiZm9ybU9wdHMudHlwZSA9PSAndmlldycgfHwgaXRlbS5yZWFkb25seSBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiPjwvbnotZGF0ZS1waWNrZXI+XHJcbiAgICAgICAgICAgIDxuei1yYW5nZS1waWNrZXIgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2RhdGVSYW5nZSdcIiBbbnpGb3JtYXRdPVwiJ3l5eXktTU0tZGQnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW256UGxhY2VIb2xkZXJdPVwiWyflvIDlp4vml7bpl7QnLCAn57uT5p2f5pe26Ze0J11cIj48L256LXJhbmdlLXBpY2tlcj5cclxuXHJcbiAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cIml0ZW0udHlwZSA9PSAnaW1hZ2UnXCIgbnotaW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiIFtoaWRkZW5dPVwidHJ1ZVwiLz5cclxuICAgICAgICAgICAgPGF0ci1pbWctdXBsb2FkICpuZ0lmPVwiaXRlbS50eXBlID09ICdpbWFnZSdcIiBbKG9wdHMpXT1cIml0ZW0uaW1hZ2VPcHRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZnRlckNoYW5nZSk9XCJpbWFnZVVwbG9hZENoYW5nZSgkZXZlbnQpXCI+PC9hdHItaW1nLXVwbG9hZD5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgPGVkaXRvciAqbmdJZj1cIml0ZW0udHlwZSA9PSAnZWRpdG9yJ1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIiBbY29uZmlnXT1cIntpbml0aWFsRnJhbWVIZWlnaHQ6aXRlbS5oZWlnaHR9XCIgPjwvZWRpdG9yPi0tPlxyXG4gICAgICAgICAgICA8YXBwLXF1aWxsLWVkaXRvciAqbmdJZj1cIml0ZW0udHlwZSA9PSAnZWRpdG9yJ1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVzXT1cIntoZWlnaHQ6aXRlbS5oZWlnaHQgPiAwID8gaXRlbS5oZWlnaHQgKyAncHgnIDogJzI1MHB4J31cIj48L2FwcC1xdWlsbC1lZGl0b3I+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YWxpZCBvZiBpdGVtLnZhbGlkYXRvcnNcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXRyRm9ybS5nZXQoaXRlbS5rZXkpLmhhc0Vycm9yKHZhbGlkLnR5cGUpICYmIChhdHJGb3JtLmdldChpdGVtLmtleSkuZGlydHkgKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImNvbG9yOnJlZDsgICAgaGVpZ2h0OiAxNXB4O21hcmdpbjogMDtsaW5lLWhlaWdodDogMTVweDtcIj57e3ZhbGlkLmVycm9yTGFiZWx9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpdGVtLmJ1dHRvbj8uaXNTaG93XCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYW50LWJ0biBhbnQtYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkb0FjdGlvbihpdGVtLmJ1dHRvbiwkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtLmJ1dHRvbi5uYW1lfX08L3NwYW4+PC9idXR0b24+XHJcbiAgICAgICAgICA8L256LWZvcm0tY29udHJvbD5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtLnRlbXBcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L256LWZvcm0taXRlbT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZm9ybT5cclxuIl19
391
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Zvcm0vZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Zvcm0vZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFVLEtBQUssRUFBWSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUF5QixXQUFXLEVBQUUsVUFBVSxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRzNDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBb0QsTUFBTSwrQkFBK0IsQ0FBQztBQUVsSCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFReEQsTUFBTSxPQUFPLGdCQUFnQjtJQU8zQiwyQ0FBMkM7SUFDM0MsWUFBcUIsWUFBeUIsRUFBVSxXQUF1QixFQUNyRSxFQUFlLEVBQVUsV0FBd0IsRUFBVSxRQUFrQixFQUE2QixNQUFjO1FBRDdHLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDckUsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUE2QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBUGxJLFVBQUssR0FBTyxFQUFFLENBQUM7UUFHTCxlQUFVLEdBQUcsSUFBSSxZ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LEdBQUcsQ0FBQztJQUNiLENBQUM7SUFDRCxRQUFRLENBQUMsSUFBUTtRQUNmLElBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksWUFBWSxFQUFDO1lBQ3JELE9BQU8sS0FBSyxDQUFBO1NBQ2I7UUFDRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzdCLElBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQztZQUN0QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7OEdBaFdVLGdCQUFnQix1SkFTc0UsU0FBUztrR0FUL0YsZ0JBQWdCLHlIQ2hCN0IsdW1OQTJHQTs0RkQzRmEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLFVBQVU7OzBCQWFzRSxNQUFNOzJCQUFDLFNBQVM7NENBTGpHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkluaXQsIElucHV0LCBJbmplY3RvciwgSW5qZWN0LCBMT0NBTEVfSUQsIE91dHB1dCwgRXZlbnRFbWl0dGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgVmFsaWRhdG9yRm59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHt0ZWxwaG9uZVZhbGlkYXRvcn0gZnJvbSAnLi4vdmFsaWRhdG9ycy9hdHItdmFsaWR0b3JzJztcclxuaW1wb3J0IHtmb3JtYXREYXRlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTaGFyZVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtlbnZpcm9ubWVudH0gZnJvbSBcIm5nLXpvcnJvLWFudGQvY29yZS9lbnZpcm9ubWVudHNcIjtcclxuaW1wb3J0IHthdHJfc3RhdGljX2RhdGFzLCBBdHJGb3JtRGV0YWlsLCBBdHJGb3JtT3B0LCBGb3JtQWN0aW9uLCBmb3JtQnV0dG9ufSBmcm9tIFwiLi4vLi4vLi4vY29yZS9iYXNlL2F0ci1jb21tb25cIjtcclxuaW1wb3J0IHtEaWN0U2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvc2VydmljZXMvZGljdC9kaWN0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHtUb29sc1V0aWx9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3V0aWxzL1Rvb2xzVXRpbFwiO1xyXG5pbXBvcnQge0h0dHBTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9odHRwLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXRyLWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mb3JtLmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEF0ckZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBkaWN0czphbnkgPSB7fTtcclxuICBhdHJGb3JtOiBGb3JtR3JvdXAgfCBhbnk7XHJcbiAgQElucHV0KCkgZm9ybU9wdHM6IEF0ckZvcm1PcHR8YW55O1xyXG4gIEBPdXRwdXQoKSBmb3JtQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtQWN0aW9uPigpO1xyXG5cclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXHJcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgc2hhcmVTZXJ2aWNlOlNoYXJlU2VydmljZSwgcHJpdmF0ZSBodHRwU2VydmljZTpIdHRwU2VydmljZSxcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIGRpY3RTZXJ2aWNlOiBEaWN0U2VydmljZSwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIEBJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIGxvY2FsZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmF0ckZvcm0gPSB0aGlzLmZiLmdyb3VwKHt9KTtcclxuICB9XHJcblxyXG4gIHJlc2V0TGF5b3V0KGl0ZW06YW55KSB7XHJcbiAgICBpZiAoIWl0ZW0ubHNwYW4pIHtcclxuICAgICAgaXRlbS5sc3BhbiA9IDI0O1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtLmNzcGFuKSB7XHJcbiAgICAgIGl0ZW0uY3NwYW4gPSAyNDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvQWN0aW9uKGl0ZW06IGZvcm1CdXR0b24sIGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikge1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxyXG4gICAgfVxyXG4gICAgbGV0IGFjdGlvbjogRm9ybUFjdGlvbiA9IHtcclxuICAgICAgbmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICBjb2RlOiBpdGVtLmNvZGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5mb3JtQWN0aW9uLmVtaXQoYWN0aW9uKTtcclxuICB9XHJcblxyXG4gIHNldFZhbHVlKGtleTpzdHJpbmcsIHZhbHVlOmFueSkge1xyXG4gICAgdGhpcy5hdHJGb3JtLmdldChrZXkpPy5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0RGljTGlzdChpdGVtOmFueSkge1xyXG4gICAgdGhpcy5zaGFyZVNlcnZpY2UuZ2V0RGljTGlzdChpdGVtKS5zdWJzY3JpYmUocmVzID0+e1xyXG4gICAgICAgIGlmKHJlcy5zdGF0dXMgPT0gMjAwICYmIHJlcy5pdGVtKXtcclxuICAgICAgICAgICAgaXRlbSA9IHJlcy5pdGVtXHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybU9wdHMgJiYgdGhpcy5mb3JtT3B0cy5pdGVtcykge1xyXG4gICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuZm9ybU9wdHMuaXRlbXMpIHtcclxuICAgICAgICAvLyB0aGlzLmF0ckZvcm0uYWRkQ29udHJvbChpdGVtLmtleSwgbmV3IEZvcm1Db250cm9sKCkpO1xyXG4gICAgICAgIHRoaXMucmVzZXRMYXlvdXQoaXRlbSlcclxuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmZvcm1PcHRzLnR5cGUgPT0gJ2FkZCcgPyBpdGVtLmRlZmF1bHRWYWx1ZSA6IGl0ZW0udmFsdWU7XHJcbiAgICAgICAgY29uc29sZS5sb2codmFsdWUpO1xyXG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT0gJ3RyZWVTZWxlY3QnICYmIGl0ZW0uc2VsZWN0VXJsLnVybCkge1xyXG4gICAgICAgICAgbGV0IGtleXMgPSBpdGVtLnNlbGVjdFVybC5jb252ZXJ0LnNwbGl0KCcsJyk7XHJcbiAgICAgICAgICB0aGlzLmh0dHBTZXJ2aWNlLnBvc3QoaXRlbS5zZWxlY3RVcmwudXJsLCB7fSwgVG9vbHNVdGlsLmdldEh0dHBPcHRpb25zKCkpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICBpdGVtLnRyZWVMaXN0ID0gcmVzLmRhdGEuZmlsdGVyKChjaGlsZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAga2V5cy5mb3JFYWNoKCh2OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCB2cyA9IHYuc3BsaXQoXCJ8XCIpO1xyXG4gICAgICAgICAgICAgICAgY2hpbGRbdnNbMF1dID0gY2hpbGRbdnNbMV1dO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSBcInNlbGVjdFwiKSB7XHJcbiAgICAgICAgICB0aGlzLmdldERpY3RWYWx1ZShpdGVtLmRpY3RDb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSAnc2VsZWN0YycpIHtcclxuICAgICAgICAgIGlmICghaXRlbS5kaWN0TGlzdCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0RGljTGlzdChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSBcInRleHRhcmVhXCIgJiYgIWl0ZW0ucm93cylcclxuICAgICAgICAgIGl0ZW0ucm93cyA9IDU7XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSBcImltYWdlXCIpIHtcclxuICAgICAgICAgIGl0ZW0uaW1hZ2VPcHRzLmtleSA9IGl0ZW0ua2V5XHJcbiAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgbGV0IGltYWdlczphbnkgPSBbXTtcclxuICAgICAgICAgICAgbGV0IGxpc3QgPSB2YWx1ZS5zcGxpdChcIixcIik7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBvZiBsaXN0KSB7XHJcbiAgICAgICAgICAgICAgaW1hZ2VzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAga2V5OiBrZXksXHJcbiAgICAgICAgICAgICAgICB1aWQ6IFwiLTFcIixcclxuICAgICAgICAgICAgICAgIHVybDogYXRyX3N0YXRpY19kYXRhcy5PU1NfVVJMICsga2V5XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpdGVtLmltYWdlT3B0cy5pbWFnZUxpc3QgPSBpbWFnZXM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT0gJ2VkaXRvcicpIHtcclxuICAgICAgICAgIGlmICghdmFsdWUpIHZhbHVlID0gXCJcIlxyXG4gICAgICAgICAgaWYgKCFpdGVtLmhlaWdodClcclxuICAgICAgICAgICAgaXRlbS5oZWlnaHQgPSAzMDBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghaXRlbS5zcGFuKVxyXG4gICAgICAgICAgaXRlbS5zcGFuID0gOFxyXG4gICAgICAgIGlmKHR5cGVvZiBpdGVtLmlzUmVxdWlyZWQgIT0gJ3N0cmluZycpe1xyXG4gICAgICAgICAgaXRlbS5pc1JlcXVpcmVkID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHRlbXBWYWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcbiAgICAgICAgaWYgKGl0ZW0udmFsaWRhdG9ycykge1xyXG4gICAgICAgICAgZm9yIChsZXQgdmFsaWRhdG9yIG9mIGl0ZW0udmFsaWRhdG9ycykge1xyXG4gICAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT0gXCJyZXF1aXJlZFwiKSB7XHJcbiAgICAgICAgICAgICAgaXRlbS5pc1JlcXVpcmVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgIHRlbXBWYWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0b3IudHlwZSA9PSBcImVtYWlsXCIpIHtcclxuICAgICAgICAgICAgICB0ZW1wVmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMuZW1haWwpXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsaWRhdG9yLnR5cGUgPT0gXCJtYXhsZW5ndGhcIikge1xyXG4gICAgICAgICAgICAgIHRlbXBWYWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodmFsaWRhdG9yLm1heGxlbmd0aCA/IHZhbGlkYXRvci5tYXhsZW5ndGggOiAxKSlcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0b3IudHlwZSA9PSBcIm1pbmxlbmd0aFwiKSB7XHJcbiAgICAgICAgICAgICAgdGVtcFZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh2YWxpZGF0b3IubWlubGVuZ3RoID8gdmFsaWRhdG9yLm1pbmxlbmd0aCA6IDEpKVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbGlkYXRvci50eXBlID09IFwidGVscGhvbmVcIikge1xyXG4gICAgICAgICAgICAgIHRlbXBWYWxpZGF0b3JzLnB1c2godGVscGhvbmVWYWxpZGF0b3IoKSlcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0b3IudHlwZSA9PSBcInBhdHRlcm5cIikge1xyXG4gICAgICAgICAgICAgIHRlbXBWYWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKHZhbGlkYXRvci5wYXR0ZXJuVmFsdWUpKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBkZWZhdWx0VmFsdWUgPSB7dmFsdWU6IHZhbHVlICE9IHVuZGVmaW5lZCA/IHZhbHVlIDogbnVsbCwgZGlzYWJsZWQ6IGl0ZW0uZGlzYWJsZSA/IGl0ZW0uZGlzYWJsZSA6IGZhbHNlfVxyXG4gICAgICAgIGlmICh0ZW1wVmFsaWRhdG9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLmF0ckZvcm0uYWRkQ29udHJvbChpdGVtLmtleSwgbmV3IEZvcm1Db250cm9sKGRlZmF1bHRWYWx1ZSwgdGVtcFZhbGlkYXRvcnMpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5hdHJGb3JtLmFkZENvbnRyb2woaXRlbS5rZXksIG5ldyBGb3JtQ29udHJvbChkZWZhdWx0VmFsdWUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc29sZS5sb2coXCIgdGhpcy5hdHJGb3JtXCIsIHRoaXMuYXRyRm9ybSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBhcmUodmFsdWU6YW55LCBvcGVyYXRvcjphbnksIHRhcmdldDphbnkpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1JpZ2h0ID0gZmFsc2U7XHJcbiAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XHJcbiAgICAgIGNhc2UgJ2VxJyA6XHJcbiAgICAgICAgaWYgKHZhbHVlID09IHRhcmdldCkge1xyXG4gICAgICAgICAgaXNSaWdodCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdnaCcgOlxyXG4gICAgICAgIGlmICh2YWx1ZSA+PSB0YXJnZXQpIHtcclxuICAgICAgICAgIGlzUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbm90RW1wdHknOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGlzUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZW1wdHknOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICBpc1JpZ2h0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQgOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBpc1JpZ2h0O1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJc1Nob3dCYXNlKG9wOmFueSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzU2hvdyA9IGZhbHNlO1xyXG4gICAgaWYgKG9wLmxlbmd0aCA+IDEpIHtcclxuICAgICAgbGV0IHZhbHVlID0gdGhpcy5hdHJGb3JtLmdldChvcFswXSkudmFsdWU7XHJcbiAgICAgIGlzU2hvdyA9IHRoaXMuY29tcGFyZSh2YWx1ZSwgb3BbMV0sIG9wWzJdKVxyXG4gICAgfSBlbHNlXHJcbiAgICAgIGlzU2hvdyA9IGZhbHNlO1xyXG5cclxuICAgIHJldHVybiBpc1Nob3c7XHJcbiAgfVxyXG4gIGlzUmVxdWlyZWQoaXRlbTpBdHJGb3JtRGV0YWlsKXtcclxuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcclxuICAgIGxldCBpc1JlcXVpcmVkID0gaXRlbS5pc1JlcXVpcmVkO1xyXG4gICAgbGV0IHR5cGUgPSB0eXBlb2YgIGlzUmVxdWlyZWQ7XHJcbiAgICBpZih0eXBlID09IFwiYm9vbGVhblwiKXtcclxuICAgICAgcmV0dXJuIGlzUmVxdWlyZWRcclxuICAgIH0gZWxzZSBpZih0eXBlID09IFwic3RyaW5nXCIpe1xyXG5cclxuICAgICAgcmVzdWx0ID0gdGhpcy5pc1Nob3coZmFsc2UsaXNSZXF1aXJlZCk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhcImlzUmVxdWlyZWRcIixyZXN1bHQpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbiAgaXNTaG93KGlzSGlkZGVuOmFueSxvcGVyYXRvcjphbnkpIHtcclxuICAgIGlmIChpc0hpZGRlbikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBsZXQgaXNTaG93ID0gZmFsc2U7XHJcbiAgICBpZiAoIW9wZXJhdG9yIHx8IG9wZXJhdG9yID09IG51bGwgfHwgb3BlcmF0b3IgPT0gXCJcIikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAob3BlcmF0b3IuaW5kZXhPZignJiYnKSA+IDApIHtcclxuICAgICAgLy8gYXxlcXxiICYmY3xlcXxkXHJcbiAgICAgIGNvbnN0IG9wcyA9IG9wZXJhdG9yLnNwbGl0KCcmJicpO1xyXG4gICAgICBpZiAob3BzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpc1Nob3cgPSB0cnVlXHJcbiAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tJc1Nob3dCYXNlKG9wc1tpXS5zcGxpdCgnfCcpKSkge1xyXG4gICAgICAgICAgICBpc1Nob3cgPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKG9wZXJhdG9yLmluZGV4T2YoJ3x8JykgPiAwKSB7XHJcbiAgICAgIC8vIGF8ZXF8Ynx8Y3xlcXxkXHJcbiAgICAgIGNvbnN0IG9wcyA9IG9wZXJhdG9yLnNwbGl0KCcmJicpO1xyXG4gICAgICBpZiAob3BzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaXNTaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAodGhpcy5jaGVja0lzU2hvd0Jhc2Uob3BzW2ldLnNwbGl0KCd8JykpKSB7XHJcbiAgICAgICAgICAgIGlzU2hvdyA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IG9wID0gb3BlcmF0b3Iuc3BsaXQoXCJ8XCIpO1xyXG4gICAgICBpc1Nob3cgPSB0aGlzLmNoZWNrSXNTaG93QmFzZShvcCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNTaG93O1xyXG4gIH1cclxuXHJcbiAgZ2V0RGljdFZhbHVlKGNvZGU6IHN0cmluZykge1xyXG4gICAgLy8gY29uc29sZS5sb2coXCI5OTk5XCIpO1xyXG4gICAgdGhpcy5kaWN0U2VydmljZS5nZXREaWN0Qnljb2RlKGNvZGUpLnN1YnNjcmliZShcclxuICAgICAgcmVzdWx0ID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdCAhPSBudWxsKVxyXG4gICAgICAgICAgdGhpcy5kaWN0c1tjb2RlXSA9IHJlc3VsdC5kaWN0cztcclxuICAgICAgfSxcclxuICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuZGljdHNbY29kZV0gPSBbXTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgaW1hZ2VVcGxvYWRDaGFuZ2UoZTogYW55KSB7XHJcbiAgICBpZiAoZS5rZXkpIHtcclxuICAgICAgdGhpcy5hdHJGb3JtLmdldChlLmtleSkuc2V0VmFsdWUoZS52YWx1ZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRGb3JtKCkge1xyXG4gICAgLy8gdGhpcy5hdHJGb3JtLnJlc2V0KCk7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcImVkaXRvciByZXNldFwiKVxyXG4gICAgaWYgKHRoaXMuZm9ybU9wdHMgJiYgdGhpcy5mb3JtT3B0cy5pdGVtcykge1xyXG4gICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuZm9ybU9wdHMuaXRlbXMpIHtcclxuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmZvcm1PcHRzLnR5cGUgPT0gJ2FkZCcgPyBpdGVtLmRlZmF1bHRWYWx1ZSA6IGl0ZW0udmFsdWU7XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSBcImltYWdlXCIpIHtcclxuICAgICAgICAgIGl0ZW0uaW1hZ2VPcHRzLmtleSA9IGl0ZW0ua2V5XHJcbiAgICAgICAgICBsZXQgaW1hZ2VzOmFueSA9IFtdO1xyXG4gICAgICAgICAgaWYgKCF2YWx1ZSkgdmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgbGV0IGxpc3QgPSB2YWx1ZS5zcGxpdChcIixcIik7XHJcbiAgICAgICAgICBmb3IgKGxldCBrZXkgb2YgbGlzdCkge1xyXG4gICAgICAgICAgICBpZiAoa2V5ICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICBpbWFnZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBrZXk6IGtleSxcclxuICAgICAgICAgICAgICAgIHVpZDogXCItMVwiLFxyXG4gICAgICAgICAgICAgICAgdXJsOiBhdHJfc3RhdGljX2RhdGFzLk9TU19VUkwgKyBrZXlcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpdGVtLmltYWdlT3B0cy5pbWFnZUxpc3QgPSBpbWFnZXM7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhpbWFnZXMpXHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT0gXCJlZGl0b3JcIikge1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coXCJlZGl0b3JcIilcclxuICAgICAgICAgIGlmICghdmFsdWUpIHZhbHVlID0gXCJcIlxyXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09IFwic2VsZWN0XCIgJiYgdmFsdWUgPT0gXCJcIikge1xyXG4gICAgICAgICAgdmFsdWUgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5hdHJGb3JtLmdldChpdGVtLmtleSkuc2V0VmFsdWUodmFsdWUgIT0gdW5kZWZpbmVkID8gdmFsdWUgOiBudWxsKVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAoY29uc3QgaSBpbiB0aGlzLmF0ckZvcm0uY29udHJvbHMpIHtcclxuICAgICAgICB0aGlzLmF0ckZvcm0uY29udHJvbHNbaV0ubWFya0FzVW50b3VjaGVkKCk7XHJcbiAgICAgICAgdGhpcy5hdHJGb3JtLmNvbnRyb2xzW2ldLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgdGhpcy5hdHJGb3JtLmNvbnRyb2xzW2ldLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdldEZvcm1WYWlsZCgpOiBhbnkge1xyXG4gICAgbGV0IG9iajphbnkgPSB7XHJcbiAgICAgIGlzVmFsaWQ6IGZhbHNlLFxyXG4gICAgICBtb2RlOiB0aGlzLmZvcm1PcHRzLnR5cGUsXHJcbiAgICAgIHZhbHVlOiB7fVxyXG4gICAgfTtcclxuICAgIGZvciAoY29uc3QgaSBpbiB0aGlzLmF0ckZvcm0uY29udHJvbHMpIHtcclxuICAgICAgdGhpcy5hdHJGb3JtLmNvbnRyb2xzW2ldLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHRoaXMuYXRyRm9ybS5jb250cm9sc1tpXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgICBvYmouaXNWYWxpZCA9IHRoaXMuYXRyRm9ybS52YWxpZFxyXG4gICAgbGV0IHZhbHVlID0gdGhpcy5hdHJGb3JtLnZhbHVlO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModmFsdWUpKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGtleSk7XHJcbiAgICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIHZhbHVlW2tleV0gIT0gbnVsbCAmJiB2YWx1ZVtrZXldICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmICh2YWx1ZVtrZXldIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLmZvcm1PcHRzLml0ZW1zKSB7XHJcbiAgICAgICAgICAgIGlmKGl0ZW0ua2V5ICE9IGtleSl7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoaXRlbS5kYXRlRm9ybWF0KXtcclxuICAgICAgICAgICAgICBvYmoudmFsdWVba2V5XSA9IGZvcm1hdERhdGUoKHZhbHVlW2tleV0gYXMgRGF0ZSksIGl0ZW0uZGF0ZUZvcm1hdCwgdGhpcy5sb2NhbGUpO1xyXG4gICAgICAgICAgICB9ZWxzZSBpZiAoaXRlbS50eXBlID09ICdkYXRlJykge1xyXG4gICAgICAgICAgICAgIG9iai52YWx1ZVtrZXldID0gZm9ybWF0RGF0ZSgodmFsdWVba2V5XSBhcyBEYXRlKSwgJ3l5eXktTU0tZGQgMDA6MDA6MDAnLCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09ICdkYXRlVGltZScpIHtcclxuICAgICAgICAgICAgICBvYmoudmFsdWVba2V5XSA9IGZvcm1hdERhdGUoKHZhbHVlW2tleV0gYXMgRGF0ZSksICd5eXl5LU1NLWRkIEhIOm1tOnNzJywgdGhpcy5sb2NhbGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0gZWxzZSBpZih2YWx1ZVtrZXldIGluc3RhbmNlb2YgQXJyYXkpe1xyXG4gICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLmZvcm1PcHRzLml0ZW1zKSB7XHJcbiAgICAgICAgICAgIGlmKGl0ZW0ua2V5ICE9IGtleSl7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGRhdGVGb3JtYXQgPSBpdGVtLmRhdGVGb3JtYXQgPyBpdGVtLmRhdGVGb3JtYXQgOiAneXl5eS1NTS1kZCAwMDowMDowMCc7XHJcbiAgICAgICAgICAgIGlmKGl0ZW0udHlwZSA9PSAnZGF0ZVJhbmdlJyl7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGVBcnI6YW55ID0gW107XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgZCBvZiB2YWx1ZVtrZXldKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRlQXJyLnB1c2goZm9ybWF0RGF0ZSgoZCBhcyBEYXRlKSwgZGF0ZUZvcm1hdCwgdGhpcy5sb2NhbGUpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSBkYXRlQXJyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG9iai52YWx1ZVtrZXldID0gdmFsdWVba2V5XVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcbiAgc2hvd1RpbWUoaXRlbTphbnkpe1xyXG4gICAgaWYoIWl0ZW0uZGF0ZUZvcm1hdCB8fCBpdGVtLmRhdGVGb3JtYXQgPT0gXCJ5eXl5LU1NLWRkXCIpe1xyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuICAgIGxldCBmb3JtYXQgPSBpdGVtLmRhdGVGb3JtYXQ7XHJcbiAgICBpZihmb3JtYXQuaW5kZXhPZihcIkhIXCIpKXtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZihmb3JtYXQuaW5kZXhPZihcIm1tXCIpKXtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZihmb3JtYXQuaW5kZXhPZihcInNzXCIpKXtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIG56LWZvcm0gW2Zvcm1Hcm91cF09XCJhdHJGb3JtXCI+XHJcbiAgPGRpdiBuei1yb3cgbnpHdXR0ZXI9XCI4XCIgbnpUeXBlPVwiZmxleFwiIG56QWxpZ249XCJ0b3BcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZm9ybU9wdHMuaXRlbXNcIj5cclxuICAgICAgPGRpdiBuei1jb2wgbnpTcGFuPVwiMjRcIiBjbGFzcz1cImZvcm0tdGl0bGVcIiAqbmdJZj1cIml0ZW0udHlwZSA9PSAndGl0bGUnXCI+XHJcbiAgICAgICAge3tpdGVtLmxhYmVsfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgbnotY29sIFtuelNwYW5dPVwiaXRlbS5zcGFuXCIgKm5nSWY9XCJpc1Nob3coaXRlbS5pc0hpZGRlbixpdGVtLm9wZXJhdG9yKVwiPlxyXG5cclxuICAgICAgICA8bnotZm9ybS1pdGVtICpuZ0lmPVwiaXRlbS50eXBlICE9ICd0aXRsZSdcIj5cclxuICAgICAgICAgIDxuei1mb3JtLWxhYmVsIFtuelNtXT1cIml0ZW0ubHNwYW5cIiBbbnpYc109XCIyNFwiIFtuelJlcXVpcmVkXT1cImlzUmVxdWlyZWQoaXRlbSlcIj57e2l0ZW0ubGFiZWx9fTwvbnotZm9ybS1sYWJlbD5cclxuICAgICAgICAgIDxuei1mb3JtLWNvbnRyb2wgW256U21dPVwiaXRlbS5jc3BhblwiIFtuelhzXT1cIjI0XCI+XHJcbiAgICAgICAgICAgIDxuei10cmVlLXNlbGVjdCAqbmdJZj1cIml0ZW0udHlwZSA9PSAndHJlZVNlbGVjdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW256Tm9kZXNdPVwiaXRlbS50cmVlTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuelNob3dTZWFyY2g9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG56SGlkZVVuTWF0Y2hlZD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnpQbGFjZUhvbGRlcj1cInt7aXRlbS5wbGFjZWhvbGRlcn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuelNob3dTZWFyY2hdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuekFsbG93Q2xlYXJdPVwiIWl0ZW0ubm90TnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnpNdWx0aXBsZV09XCJpdGVtLnNlbGVjdFVybC5pc011bHRpcGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuekRpc2FibGVkXT1cIml0ZW0ucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmbGV4OiAxXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L256LXRyZWUtc2VsZWN0PlxyXG4gICAgICAgICAgICA8bnotdHJlZS1zZWxlY3QgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ3RyZWVTZWxlY3QnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuekFsbG93Q2xlYXJdPVwiIWl0ZW0ubm90TnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnpOb2Rlc109XCJpdGVtLnRyZWVMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG56U2hvd1NlYXJjaD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnpIaWRlVW5NYXRjaGVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuelBsYWNlSG9sZGVyPVwie3tpdGVtLnBsYWNlaG9sZGVyfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW256U2hvd1NlYXJjaF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW256TXVsdGlwbGVdPVwiaXRlbS5zZWxlY3RVcmwuaXNNdWx0aXBsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnpEaXNhYmxlZF09XCJpdGVtLnJlYWRvbmx5XCIgc3R5bGU9XCJmbGV4OiAxXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L256LXRyZWUtc2VsZWN0PlxyXG4gICAgICAgICAgICA8YXBwLXNlbGVjdC1pY29ucyAqbmdJZj1cIml0ZW0udHlwZSA9PSAnc2VsZWN0SWNvbidcIiBuei1pbnB1dCBwbGFjZWhvbGRlcj1cInt7aXRlbS5wbGFjZWhvbGRlcn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIml0ZW0ucmVhZG9ubHkgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmbGV4OiAxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiPlxyXG4gICAgICAgICAgICA8L2FwcC1zZWxlY3QtaWNvbnM+XHJcbiAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cIml0ZW0udHlwZSA9PSAndGV4dCdcIiBuei1pbnB1dCBwbGFjZWhvbGRlcj1cInt7aXRlbS5wbGFjZWhvbGRlcn19XCJcclxuICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJpdGVtLnJlYWRvbmx5IHx8IGZvcm1PcHRzLnR5cGUgPT0gJ3ZpZXcnXCJcclxuICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIi8+XHJcbiAgICAgICAgICAgIDx0ZXh0YXJlYSAqbmdJZj1cIml0ZW0udHlwZSA9PSAndGV4dGFyZWEnXCIgbnotaW5wdXQgW3Jvd3NdPVwiaXRlbS5yb3dzXCIgcGxhY2Vob2xkZXI9XCJ7e2l0ZW0ucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCIgW3JlYWRvbmx5XT1cIml0ZW0ucmVhZG9ubHl8fCBmb3JtT3B0cy50eXBlID09ICd2aWV3J1wiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgIDxuei1pbnB1dC1udW1iZXIgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ251bWJlcidcIiBuelBsYWNlSG9sZGVyPVwie3tpdGVtLnBsYWNlaG9sZGVyfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIj48L256LWlucHV0LW51bWJlcj5cclxuICAgICAgICAgICAgPG56LXJhZGlvLWdyb3VwICpuZ0lmPVwiaXRlbS50eXBlID09ICdyYWRpbydcIiBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIG56LXJhZGlvICpuZ0Zvcj1cImxldCBvIG9mIGl0ZW0uZGljdExpc3RcIiBbbnpWYWx1ZV09XCJvLnZhbHVlXCI+e3tvLmxhYmVsfX08L2xhYmVsPlxyXG4gICAgICAgICAgICA8L256LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgICA8bnotc2VsZWN0XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ3NlbGVjdCdcIlxyXG4gICAgICAgICAgICAgIG56UGxhY2VIb2xkZXI9XCJ7e2l0ZW0ucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgbnpBbGxvd0NsZWFyPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiXHJcbiAgICAgICAgICAgICAgbnpTZXJ2ZXJTZWFyY2hcclxuICAgICAgICAgICAgICBuekRpc2FibGVkPVwie3tpdGVtLnJlYWRvbmx5fHwgZm9ybU9wdHMudHlwZSA9PSAndmlldyd9fVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bnotb3B0aW9uICpuZ0Zvcj1cImxldCBvIG9mIGRpY3RzW2l0ZW0uZGljdENvZGVdXCIgW256TGFiZWxdPVwiby50eXBlTmFtZVwiIFtuelZhbHVlXT1cIm8uaWRcIj48L256LW9wdGlvbj5cclxuICAgICAgICAgICAgPC9uei1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDxuei1zZWxlY3RcclxuICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0udHlwZSA9PSAnc2VsZWN0YydcIlxyXG4gICAgICAgICAgICAgIG56UGxhY2VIb2xkZXI9XCJ7e2l0ZW0ucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgbnpBbGxvd0NsZWFyPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiXHJcbiAgICAgICAgICAgICAgbnpTZXJ2ZXJTZWFyY2hcclxuICAgICAgICAgICAgICBuekRpc2FibGVkPVwie3tpdGVtLnJlYWRvbmx5fHwgZm9ybU9wdHMudHlwZSA9PSAndmlldyd9fVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bnotb3B0aW9uICpuZ0Zvcj1cImxldCBvIG9mIGl0ZW0uZGljdExpc3RcIiBbbnpMYWJlbF09XCJvLmxhYmVsXCIgW256VmFsdWVdPVwiby52YWx1ZVwiPjwvbnotb3B0aW9uPlxyXG4gICAgICAgICAgICA8L256LXNlbGVjdD5cclxuICAgICAgICAgICAgPG56LWNhc2NhZGVyIFtuekRpc2FibGVkXT1cIml0ZW0ucmVhZG9ubHlcIiBzdHlsZT1cImZsZXg6IDFcIiBbbnpBbGxvd0NsZWFyXT1cIiFpdGVtLm5vdE51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW256VmFsdWVQcm9wZXJ0eV09XCInbnpWYWx1ZVByb3BlcnR5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbbnpTaG93U2VhcmNoXT1cInRydWVcIiAqbmdJZj1cIml0ZW0udHlwZSA9PSAnY2FzY2FkZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtuek9wdGlvbnNdPVwiaXRlbS5kaWN0TGlzdFwiIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIj48L256LWNhc2NhZGVyPlxyXG4gICAgICAgICAgICA8bnotZGF0ZS1waWNrZXIgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2RhdGUnXCIgW256Rm9ybWF0XT1cIml0ZW0uZGF0ZUZvcm1hdCA/IGl0ZW0uZGF0ZUZvcm1hdCA6ICd5eXl5LU1NLWRkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnpTaG93VGltZV09XCJzaG93VGltZShpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnpEaXNhYmxlZF09XCJmb3JtT3B0cy50eXBlID09ICd2aWV3JyB8fCBpdGVtLnJlYWRvbmx5IFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCI+PC9uei1kYXRlLXBpY2tlcj5cclxuICAgICAgICAgICAgPG56LXJhbmdlLXBpY2tlciAqbmdJZj1cIml0ZW0udHlwZSA9PSAnZGF0ZVJhbmdlJ1wiIFtuekZvcm1hdF09XCIneXl5eS1NTS1kZCdcIiBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnpQbGFjZUhvbGRlcl09XCJbJ+W8gOWni+aXtumXtCcsICfnu5PmnZ/ml7bpl7QnXVwiPjwvbnotcmFuZ2UtcGlja2VyPlxyXG5cclxuICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiaXRlbS50eXBlID09ICdpbWFnZSdcIiBuei1pbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCIgW2hpZGRlbl09XCJ0cnVlXCIvPlxyXG4gICAgICAgICAgICA8YXRyLWltZy11cGxvYWQgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2ltYWdlJ1wiIFsob3B0cyldPVwiaXRlbS5pbWFnZU9wdHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFmdGVyQ2hhbmdlKT1cImltYWdlVXBsb2FkQ2hhbmdlKCRldmVudClcIj48L2F0ci1pbWctdXBsb2FkPlxyXG5cclxuICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICA8ZWRpdG9yICpuZ0lmPVwiaXRlbS50eXBlID09ICdlZGl0b3InXCIgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiIFtjb25maWddPVwie2luaXRpYWxGcmFtZUhlaWdodDppdGVtLmhlaWdodH1cIiA+PC9lZGl0b3I+LS0+XHJcbiAgICAgICAgICAgIDxhcHAtcXVpbGwtZWRpdG9yICpuZ0lmPVwiaXRlbS50eXBlID09ICdlZGl0b3InXCIgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZXNdPVwie2hlaWdodDppdGVtLmhlaWdodCA+IDAgPyBpdGVtLmhlaWdodCArICdweCcgOiAnMjUwcHgnfVwiPjwvYXBwLXF1aWxsLWVkaXRvcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbGlkIG9mIGl0ZW0udmFsaWRhdG9yc1wiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHJGb3JtLmdldChpdGVtLmtleSkuaGFzRXJyb3IodmFsaWQudHlwZSkgJiYgKGF0ckZvcm0uZ2V0KGl0ZW0ua2V5KS5kaXJ0eSApXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiY29sb3I6cmVkOyAgICBoZWlnaHQ6IDE1cHg7bWFyZ2luOiAwO2xpbmUtaGVpZ2h0OiAxNXB4O1wiPnt7dmFsaWQuZXJyb3JMYWJlbH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIml0ZW0uYnV0dG9uPy5pc1Nob3dcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhbnQtYnRuIGFudC1idG4tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvQWN0aW9uKGl0ZW0uYnV0dG9uLCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8c3Bhbj57e2l0ZW0uYnV0dG9uLm5hbWV9fTwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgICAgIDwvbnotZm9ybS1jb250cm9sPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW0udGVtcFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbnotZm9ybS1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG5cclxuPC9mb3JtPlxyXG4iXX0=