@agilemotion/oui-react-js 2.0.25 → 2.0.27
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.
- package/dist/RestService.js +22 -13
- package/dist/RestUtils.js +7 -4
- package/dist/components/AlertBar.js +2 -2
- package/dist/components/Button.js +59 -7
- package/dist/components/DataGrid.js +42 -16
- package/dist/components/DocumentTemplateDesignerComponent.js +2 -2
- package/dist/components/FileThumb.js +69 -7
- package/dist/components/WordDocumentViewer.js +2 -2
- package/dist/components/dashboard/components/blackDashboard/sidebar/FoldingTabSidebar.js +6 -2
- package/dist/components/form/BaseField.js +4 -2
- package/dist/components/form/Checkbox.js +3 -2
- package/dist/components/form/FieldSet.js +2 -2
- package/dist/components/form/Form.css +1 -1
- package/dist/components/form/Form.js +40 -38
- package/dist/components/form/GridField.js +6 -5
- package/dist/components/form/RadioGroup.js +5 -5
- package/dist/components/form/UploadField.js +68 -4
- package/dist/components/layout/Layout.js +9 -1
- package/dist/components/layout/View.css +2 -0
- package/dist/components/media/ChatViewer.js +103 -0
- package/dist/components/media/TrainingRoom.js +5 -5
- package/dist/components/media/VCRoomParticipant.js +7 -3
- package/dist/components/media/VCRoomWorkspace.js +19 -4
- package/dist/components/media/chat/ChatRoom.js +21 -10
- package/dist/components/media/chat/PollContainer.js +85 -18
- package/dist/js/ProcurementMeetings.js +11 -4
- package/dist/view/PortalDashboard.js +6 -5
- package/dist/view/security/ForgotPassword.js +4 -1
- package/dist/view/security/ForgotPasswordBasic.js +4 -1
- package/dist/view/security/RegisterInteractionPortal.js +5 -1
- package/dist/view/security/ResetPassword.js +4 -1
- package/dist/view/security/ResetPasswordBasic.js +4 -1
- package/dist/view/security/Security.js +16 -3
- package/package.json +1 -1
|
@@ -483,7 +483,9 @@ const VCRoomParticipant = props => {
|
|
|
483
483
|
};
|
|
484
484
|
const onNewProducers = function (producers) {
|
|
485
485
|
let loading = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
486
|
-
|
|
486
|
+
if (producers.length > 0) {
|
|
487
|
+
console.log("====== PRODUCERS RECEIVED : [ " + JSON.stringify(producers) + " ] =======");
|
|
488
|
+
}
|
|
487
489
|
for (const producer of producers) {
|
|
488
490
|
if (device) {
|
|
489
491
|
if (producer.userId === props.data.userId) {
|
|
@@ -503,7 +505,9 @@ const VCRoomParticipant = props => {
|
|
|
503
505
|
failedProducersDueToNullTransport.push(producer);
|
|
504
506
|
}
|
|
505
507
|
}
|
|
506
|
-
|
|
508
|
+
if (failedProducersDueToNullTransport.length > 0) {
|
|
509
|
+
console.log("====== PRODUCERS THAT COULD NOT BE CONSUMES : [ " + JSON.stringify(failedProducersDueToNullTransport) + " ] =======");
|
|
510
|
+
}
|
|
507
511
|
};
|
|
508
512
|
const removeConsumer = (consumerId, kind, userId) => {
|
|
509
513
|
// Stop any active-speaker meter attached to this consumer's stream.
|
|
@@ -855,4 +859,4 @@ const VCRoomParticipant = props => {
|
|
|
855
859
|
})));
|
|
856
860
|
};
|
|
857
861
|
var _default = exports.default = VCRoomParticipant;
|
|
858
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1ZDRXZlbnRUeXBlIiwiX1ZDRXZlbnRNYW5hZ2VyIiwiX1ZDUm9vbVJlY29yZGVyIiwiX01lZGlhU291cEhlbHBlciIsIl9UcmFja3MiLCJfSWNvbkJ1dHRvbiIsIl9JY29uIiwiX2ljb25zTWF0ZXJpYWwiLCJfVG9vbHRpcCIsIl9tYXRlcmlhbCIsIl9Tb2NrZXRNYW5hZ2VyIiwiX0J1dHRvbiIsIl9BcHBsaWNhdGlvbk1hbmFnZXIiLCJfYXVkaW9MZXZlbE1ldGVyIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiU1BFQUtJTkdfTEVWRUwiLCJWSURFT19DT0RFQ19PUFRJT05TIiwiZXhwb3J0cyIsInZpZGVvR29vZ2xlU3RhcnRCaXRyYXRlIiwiVklERU9fQ09OU1RSQUlOVFMiLCJhdWRpbyIsInZpZGVvIiwid2lkdGgiLCJtaW4iLCJpZGVhbCIsImhlaWdodCIsIlZJREVPX0VOQ09ESU5HUyIsInJpZCIsIm1heEJpdHJhdGUiLCJzY2FsYWJpbGl0eU1vZGUiLCJsb2NhdGlvbiIsIndpbmRvdyIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJWQ1Jvb21QYXJ0aWNpcGFudCIsInByb3BzIiwiaGFuZFJhaXNlZCIsInNldEhhbmRSYWlzZWQiLCJSZWFjdCIsInVzZVN0YXRlIiwidmlkZW9NdXRlZCIsInNldFZpZGVvTXV0ZWQiLCJhdWRpb011dGVkIiwic2V0QXVkaW9NdXRlZCIsInByb2R1Y2VyVHJhbnNwb3J0Iiwic2V0UHJvZHVjZXJUcmFuc3BvcnQiLCJ2aWRlb1JlZnJlc2hlciIsInNldFZpZGVvUmVmcmVzaGVyIiwicHJvZHVjZXJzIiwiTWFwIiwiZmFpbGVkUHJvZHVjZXJzRHVlVG9OdWxsVHJhbnNwb3J0IiwiYXVkaW9EZXZpY2VzIiwic2V0QXVkaW9EZXZpY2VzIiwic2VsZWN0ZWRBdWRpb0RldmljZSIsInNldFNlbGVjdGVkQXVkaW9EZXZpY2UiLCJjb25zdW1lcnMiLCJzb3VuZExldmVsIiwic2V0U291bmRMZXZlbCIsImV2ZW50SGFuZGxlciIsInZpZGVvUmVmIiwidXNlUmVmIiwidmlkZW9TdHJlYW0iLCJhdWRpb1JlZiIsInRyYWNrcyIsIlRyYWNrcyIsInNvdW5kTGV2ZWxDb3VudGVyIiwibWV0ZXJzIiwidW5tb3VudGVkUmVmIiwic2hvd1ZpZGVvIiwiZGV2aWNlIiwicGFydGljaXBhbnRzIiwibnVtYmVyT2ZJblZpZXdQYXJ0aWNpcGFudHMiLCJhbmNob3JFbCIsInNldEFuY2hvckVsIiwib3Blbk1vcmVBY3Rpb25zIiwiQm9vbGVhbiIsImRvd25sb2FkVXJsIiwic2V0RG93bmxvYWRVcmwiLCJoYW5kbGVyIiwiaWQiLCJkYXRhIiwidXNlcklkIiwib24iLCJldmVudFR5cGUiLCJiZSIsIlZDRXZlbnRUeXBlIiwiQVVESU9fVklTVUFMX1NFVFRJTkdTX0NIQU5HRUQiLCJvbkFWU2V0dGluZ3NDaGFuZ2UiLCJwYXlsb2FkIiwiUkFJU0VfSEFORCIsIm9uUmFpc2VIYW5kIiwiTE9XRVJfSEFORCIsIm9uTG93ZXJIYW5kIiwiTkVXX1BST0RVQ0VSUyIsIm9uTmV3UHJvZHVjZXJzIiwiQ09OU1VNRVJfQ0xPU0VEIiwiY29uc3VtZXJJZCIsInJlbW92ZUNvbnN1bWVyIiwia2luZCIsIkFVRElPX0xFVkVMIiwibGV2ZWwiLCJoYW5kbGVDbGlja0RldmljZXNJY29uIiwiZXZlbnQiLCJjdXJyZW50VGFyZ2V0IiwiY2hhbmdlQXVkaW9EZXZpY2UiLCJ1c2VFZmZlY3QiLCJhcGkiLCJjdXJyZW50Iiwic3JjT2JqZWN0Iiwic291bmRNb25pdG9yIiwiaW5WaWV3IiwiaGFuZGxlQ2xvc2VEZXZpY2VNZW51IiwiaXNDdXJyZW50VXNlciIsInN0b3BQcm9kdWNpbmciLCJwcm9kdWNlIiwiVXRpbHMiLCJpc051bGwiLCJhdmF0YXJJZCIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldENvbnRleHRSb290Iiwic2Vzc2lvblN0b3JhZ2UiLCJnZXRJdGVtIiwib25BdWRpb0RldmljZUNoYW5nZSIsImNyZWF0ZVByb2R1Y2VyVHJhbnNwb3J0IiwiY29uc29sZSIsImxvZyIsInNwbGljZSIsImxlbmd0aCIsIm1lZGlhU291cEhlbHBlciIsImluaXRQcm9kdWNlclRyYW5zcG9ydCIsIm1lZXRpbmdJZCIsImdldFVzZXJEZXRhaWxzIiwidXNlcm5hbWUiLCJoYW5kbGVEZXZpY2VzQ2hhbmdlZCIsImRldmljZXMiLCJhdWRpb0RldmljZUxpc3QiLCJmb3JFYWNoIiwicHVzaCIsImRldmljZUlkIiwibGFiZWwiLCJ2Y0V2ZW50TWFuYWdlciIsInJlbW92ZVN1YnNjcmlwdGlvbnMiLCJhZGRTdWJzY3JpcHRpb25zIiwibmF2aWdhdG9yIiwibWVkaWFEZXZpY2VzIiwib25kZXZpY2VjaGFuZ2UiLCJlbnVtZXJhdGVEZXZpY2VzIiwidGhlbiIsImNvbnN1bWVGYWlsZWRQcm9kdWNlcnMiLCJrZXkiLCJ2YWx1ZSIsInN0b3AiLCJjbGVhciIsInN0YXJ0TWV0ZXIiLCJzdHJlYW0iLCJzdG9wTWV0ZXIiLCJzdGFydEF1ZGlvTGV2ZWxNZXRlciIsImZpcmVFdmVudCIsImRlbGV0ZSIsInR5cGUiLCJlcnJvciIsImNhblByb2R1Y2UiLCJtZWRpYUNvbnN0cmFpbnRzIiwiZ2V0VXNlck1lZGlhIiwidHJhY2siLCJnZXRBdWRpb1RyYWNrcyIsImdldFZpZGVvVHJhY2tzIiwicGFyYW1zIiwiaXNIb3N0IiwibWVkaWFSZWNvcmRlciIsImFkZFRyYWNrIiwic2V0QXVkaW9UcmFjayIsImVuY29kaW5ncyIsImNvZGVjT3B0aW9ucyIsInNldFZpZGVvVHJhY2siLCJwcm9kdWNlciIsImlzUnRwQ29sbGlzaW9uRXJyb3IiLCJTWVNURU1fQUxFUlQiLCJtZXNzYWdlIiwiUkVKT0lOX0FMRVJUX01FU1NBR0UiLCJnZXRTdGF0cyIsImdldFRyYWNrcyIsInNldFRpbWVvdXQiLCJjYWxsYmFjayIsInByb2R1Y2VySWQiLCJjbG9zZSIsInN0b3BWaWRlb1RyYWNrIiwic3RvcEF1ZGlvVHJhY2siLCJzb2NrZXRNYW5hZ2VyIiwiZW1pdEV2ZW50IiwiUFJPRFVDRVJfQ0xPU0VEIiwicm9vbUlkIiwiY2F0Y2giLCJsb2FkaW5nIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiSlNPTiIsInN0cmluZ2lmeSIsInNjcmVlblNoYXJpbmciLCJjb25zdW1lIiwiYXVkaW9FbGVtZW50IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsInJlbW92ZVRyYWNrIiwiZWxlbWVudEJ5SWQiLCJyZW1vdmVDaGlsZCIsInJldHJ5Q29uc3VtZSIsInJldHJpZXMiLCJ0cmFuc3BvcnQiLCJnZXRSZWN2VHJhbnNwb3J0IiwiRXJyb3IiLCJnZXRDb25zdW1lU3RyZWFtIiwicnRwQ2FwYWJpbGl0aWVzIiwiX3JlZiIsImNvbnN1bWVyIiwiY3JlYXRlRWxlbWVudCIsInBsYXlzaW5saW5lIiwiYXV0b3BsYXkiLCJhcHBlbmRDaGlsZCIsInRyYWNrRW5kZWRQYXJ0aWNpcGFudCIsImZpbmQiLCJwIiwiZ2V0UGFydGljaXBhbnROYW1lIiwibmFtZSIsImNvbmNhdCIsIkZyYWdtZW50IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJwYWRkaW5nIiwicG9zaXRpb24iLCJib3JkZXJSYWRpdXMiLCJvdmVyZmxvdyIsImJveFNpemluZyIsImJhY2tncm91bmRDb2xvciIsImJvcmRlciIsImdldEFwcGxpY2F0aW9uUHJpbWFyeUNvbG9yIiwiYm94U2hhZG93IiwidHJhbnNpdGlvbiIsIm1hcmdpbkJvdHRvbSIsInNpemluZyIsImNvbG9yIiwiZm9udFNpemUiLCJiYWNrZ3JvdW5kUmVwZWF0IiwiYmFja2dyb3VuZFNpemUiLCJiYWNrZ3JvdW5kUG9zaXRpb24iLCJiYWNrZ3JvdW5kSW1hZ2UiLCJnZXRJbml0aWFscyIsImF1dG9QbGF5IiwicmVmIiwibXV0ZWQiLCJvYmplY3RGaXQiLCJ0cmFuc2Zvcm0iLCJ6SW5kZXgiLCJkaXNwbGF5IiwibGVmdCIsImJvdHRvbSIsImFsaWduSXRlbXMiLCJnYXAiLCJtYXhXaWR0aCIsImZvbnRXZWlnaHQiLCJsaW5lSGVpZ2h0Iiwid2hpdGVTcGFjZSIsInRleHRPdmVyZmxvdyIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsImp1c3RpZnlDb250ZW50Iiwib25DbGljayIsIm9uSG9zdEF1ZGlvTXV0ZSIsIm9uSG9zdFZpZGVvTXV0ZSIsInRpdGxlIiwiUGFuVG9vbCIsIk1lbnUiLCJvcGVuIiwib25DbG9zZSIsIlBhcGVyUHJvcHMiLCJlbGV2YXRpb24iLCJzeCIsImZpbHRlciIsIm10IiwibWwiLCJtciIsImNvbnRlbnQiLCJ0b3AiLCJyaWdodCIsImJnY29sb3IiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJob3Jpem9udGFsIiwidmVydGljYWwiLCJhbmNob3JPcmlnaW4iLCJtYXAiLCJpbmRleCIsIk1lbnVJdGVtIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbWVkaWEvVkNSb29tUGFydGljaXBhbnQuanN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAqL1xuaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgJy4vVkNSb29tUGFydGljaXBhbnQuY3NzJztcbmltcG9ydCBVdGlscyBmcm9tICcuLi8uLi9VdGlscyc7XG5pbXBvcnQge1ZDRXZlbnRUeXBlfSBmcm9tICcuL1ZDRXZlbnRUeXBlJztcbmltcG9ydCB2Y0V2ZW50TWFuYWdlciBmcm9tICcuL1ZDRXZlbnRNYW5hZ2VyJztcbmltcG9ydCBtZWRpYVJlY29yZGVyIGZyb20gJy4vVkNSb29tUmVjb3JkZXInO1xuaW1wb3J0IG1lZGlhU291cEhlbHBlciwge2lzUnRwQ29sbGlzaW9uRXJyb3IsIFJFSk9JTl9BTEVSVF9NRVNTQUdFfSBmcm9tICcuL01lZGlhU291cEhlbHBlcic7XG5pbXBvcnQgVHJhY2tzIGZyb20gJy4vVHJhY2tzJztcbmltcG9ydCBJY29uQnV0dG9uIGZyb20gJ0BtdWkvbWF0ZXJpYWwvSWNvbkJ1dHRvbic7XG5pbXBvcnQgSWNvbiBmcm9tICcuLi9JY29uJztcbmltcG9ydCB7UGFuVG9vbH0gZnJvbSAnQG11aS9pY29ucy1tYXRlcmlhbCc7XG5pbXBvcnQgVG9vbHRpcCBmcm9tICdAbXVpL21hdGVyaWFsL1Rvb2x0aXAnO1xuaW1wb3J0IHtNZW51LCBNZW51SXRlbX0gZnJvbSAnQG11aS9tYXRlcmlhbCc7XG5pbXBvcnQgc29ja2V0TWFuYWdlciBmcm9tICcuLi9Tb2NrZXRNYW5hZ2VyJztcbmltcG9ydCBCdXR0b24gZnJvbSAnQG11aS9tYXRlcmlhbC9CdXR0b24nO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tICcuLi8uLi9BcHBsaWNhdGlvbk1hbmFnZXInO1xuaW1wb3J0IHtzdGFydEF1ZGlvTGV2ZWxNZXRlcn0gZnJvbSAnLi9hdWRpb0xldmVsTWV0ZXInO1xuXG5jb25zdCBTUEVBS0lOR19MRVZFTCA9IDY7XG5cbmV4cG9ydCBjb25zdCBWSURFT19DT0RFQ19PUFRJT05TID0ge1xuICAgIHZpZGVvR29vZ2xlU3RhcnRCaXRyYXRlOiAxMDAwXG59O1xuXG5leHBvcnQgY29uc3QgVklERU9fQ09OU1RSQUlOVFMgPSB7XG4gICAgYXVkaW86IGZhbHNlLFxuICAgIHZpZGVvOiB7XG4gICAgICAgIHdpZHRoOiB7XG4gICAgICAgICAgICBtaW46IDY0MCxcbiAgICAgICAgICAgIGlkZWFsOiAxOTIwXG4gICAgICAgIH0sXG4gICAgICAgIGhlaWdodDoge1xuICAgICAgICAgICAgbWluOiA0MDAsXG4gICAgICAgICAgICBpZGVhbDogMTA4MFxuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFZJREVPX0VOQ09ESU5HUyA9IFtcbiAgICB7XG4gICAgICAgIHJpZDogJ3IwJyxcbiAgICAgICAgbWF4Qml0cmF0ZTogMjAwMDAsXG4gICAgICAgIC8vc2NhbGVSZXNvbHV0aW9uRG93bkJ5OiAxMC4wLFxuICAgICAgICBzY2FsYWJpbGl0eU1vZGU6ICdTMVQzJ1xuICAgIH0sXG4gICAge1xuICAgICAgICByaWQ6ICdyMScsXG4gICAgICAgIG1heEJpdHJhdGU6IDE1MDAwMCxcbiAgICAgICAgc2NhbGFiaWxpdHlNb2RlOiAnUzFUMydcbiAgICB9LFxuICAgIHtcbiAgICAgICAgcmlkOiAncjInLFxuICAgICAgICBtYXhCaXRyYXRlOiA0NTAwMDAsXG4gICAgICAgIHNjYWxhYmlsaXR5TW9kZTogJ1MxVDMnXG4gICAgfVxuXTtcblxuY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xuY29uc3QgVkNSb29tUGFydGljaXBhbnQgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCBbaGFuZFJhaXNlZCwgc2V0SGFuZFJhaXNlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3ZpZGVvTXV0ZWQsIHNldFZpZGVvTXV0ZWRdID0gUmVhY3QudXNlU3RhdGUocHJvcHMudmlkZW9NdXRlZCk7XG4gICAgY29uc3QgW2F1ZGlvTXV0ZWQsIHNldEF1ZGlvTXV0ZWRdID0gUmVhY3QudXNlU3RhdGUocHJvcHMuYXVkaW9NdXRlZCk7XG4gICAgY29uc3QgW3Byb2R1Y2VyVHJhbnNwb3J0LCBzZXRQcm9kdWNlclRyYW5zcG9ydF0gPSBSZWFjdC51c2VTdGF0ZShwcm9wcy5wcm9kdWNlclRyYW5zcG9ydCk7XG4gICAgY29uc3QgW3ZpZGVvUmVmcmVzaGVyLCBzZXRWaWRlb1JlZnJlc2hlcl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3Byb2R1Y2Vyc10gPSBSZWFjdC51c2VTdGF0ZShuZXcgTWFwKCkpO1xuICAgIGNvbnN0IFtmYWlsZWRQcm9kdWNlcnNEdWVUb051bGxUcmFuc3BvcnRdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFthdWRpb0RldmljZXMsIHNldEF1ZGlvRGV2aWNlc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW3NlbGVjdGVkQXVkaW9EZXZpY2UsIHNldFNlbGVjdGVkQXVkaW9EZXZpY2VdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2NvbnN1bWVyc10gPSBSZWFjdC51c2VTdGF0ZShuZXcgTWFwKCkpO1xuICAgIGNvbnN0IFtzb3VuZExldmVsLCBzZXRTb3VuZExldmVsXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtldmVudEhhbmRsZXJdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IHZpZGVvUmVmID0gdXNlUmVmKCk7XG4gICAgY29uc3QgdmlkZW9TdHJlYW0gPSB1c2VSZWYoKTtcbiAgICBjb25zdCBhdWRpb1JlZiA9IHVzZVJlZigpO1xuICAgIGNvbnN0IHRyYWNrcyA9IHVzZVJlZihuZXcgVHJhY2tzKCkpO1xuICAgIGNvbnN0IHNvdW5kTGV2ZWxDb3VudGVyID0gdXNlUmVmKDApO1xuICAgIC8vIEFjdGl2ZS1zcGVha2VyIG1ldGVyczogdGhpcyAoc2VsZikgdGlsZSBpcyB0aGUgYXVkaW8gaHViIOKAlCBpdCBjb25zdW1lc1xuICAgIC8vIGV2ZXJ5IHBhcnRpY2lwYW50J3MgYXVkaW8gKyBwcm9kdWNlcyB0aGUgbG9jYWwgbWljIOKAlCBzbyBpdCBydW5zIHRoZSBsZXZlbFxuICAgIC8vIG1ldGVycyBhbmQgYnJvYWRjYXN0cyB7dXNlcklkLCBsZXZlbH0gZm9yIGVhY2ggdGlsZSB0byBoaWdobGlnaHQgaXRzZWxmLlxuICAgIGNvbnN0IG1ldGVycyA9IHVzZVJlZihuZXcgTWFwKCkpO1xuICAgIC8vIFNldCBvbiB1bm1vdW50IHNvIHRoZSByZWN1cnNpdmUgY29uc3VtZS9yZXRyeSBzZXRUaW1lb3V0IGxvb3BzIHN0b3BcbiAgICAvLyByZS1zY2hlZHVsaW5nIChvdGhlcndpc2UgdGhleSBwb2xsL3JldHJ5IGZvcmV2ZXIgYWZ0ZXIgdGhlIHRpbGUgaXMgZ29uZSkuXG4gICAgY29uc3QgdW5tb3VudGVkUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBzaG93VmlkZW8gPSB0cnVlO1xuICAgIGNvbnN0IHtcbiAgICAgICAgZGV2aWNlLFxuICAgICAgICBwYXJ0aWNpcGFudHNcbiAgICB9ID0gcHJvcHM7XG4gICAgY29uc3Qge251bWJlck9mSW5WaWV3UGFydGljaXBhbnRzfSA9IHByb3BzO1xuICAgIGNvbnN0IFthbmNob3JFbCwgc2V0QW5jaG9yRWxdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qgb3Blbk1vcmVBY3Rpb25zID0gQm9vbGVhbihhbmNob3JFbCk7XG5cbiAgICBjb25zdCBbZG93bmxvYWRVcmwsIHNldERvd25sb2FkVXJsXSA9IHVzZVN0YXRlKG51bGwpO1xuXG4gICAgY29uc3QgaGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ21lZXRpbmctcGFydGljaXBhbnQtJyArIHByb3BzLmRhdGEudXNlcklkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uOiAoZXZlbnRUeXBlLCBiZSkgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuQVVESU9fVklTVUFMX1NFVFRJTkdTX0NIQU5HRUQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkFWU2V0dGluZ3NDaGFuZ2UoYmUucGF5bG9hZCA/IGJlLnBheWxvYWQgOiBiZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5SQUlTRV9IQU5EOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25SYWlzZUhhbmQoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5MT1dFUl9IQU5EOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25Mb3dlckhhbmQoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5ORVdfUFJPRFVDRVJTOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25OZXdQcm9kdWNlcnMoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5DT05TVU1FUl9DTE9TRUQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3VtZXJzLmhhcyhiZS5wYXlsb2FkLmNvbnN1bWVySWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ29uc3VtZXIoYmUucGF5bG9hZC5jb25zdW1lcklkLCBiZS5wYXlsb2FkLmtpbmQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuQVVESU9fTEVWRUw6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmUucGF5bG9hZCAmJiBiZS5wYXlsb2FkLnVzZXJJZCA9PT0gcHJvcHMuZGF0YS51c2VySWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTb3VuZExldmVsKGJlLnBheWxvYWQubGV2ZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVDbGlja0RldmljZXNJY29uID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIHNldEFuY2hvckVsKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgIH07XG5cbiAgICBjb25zdCBjaGFuZ2VBdWRpb0RldmljZSA9IChkZXZpY2UpID0+IHtcbiAgICAgICAgc2V0U2VsZWN0ZWRBdWRpb0RldmljZShkZXZpY2UpO1xuICAgIH07XG5cbiAgICBjb25zdCBvblJhaXNlSGFuZCA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChwYXlsb2FkICYmIHBheWxvYWQudXNlcklkID09PSBwcm9wcy5kYXRhLnVzZXJJZCkge1xuICAgICAgICAgICAgc2V0SGFuZFJhaXNlZCh0cnVlKTtcbiAgICAgICAgICAgIHByb3BzLmRhdGEuaGFuZFJhaXNlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25Mb3dlckhhbmQgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAocGF5bG9hZCAmJiBwYXlsb2FkLnVzZXJJZCA9PT0gcHJvcHMuZGF0YS51c2VySWQpIHtcbiAgICAgICAgICAgIHNldEhhbmRSYWlzZWQoZmFsc2UpO1xuICAgICAgICAgICAgcHJvcHMuZGF0YS5oYW5kUmFpc2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgZXZlbnRIYW5kbGVyLmFwaSA9IGhhbmRsZXIoKTtcbiAgICB9KTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICh2aWRlb1JlZi5jdXJyZW50ICYmIHZpZGVvU3RyZWFtLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHZpZGVvUmVmLmN1cnJlbnQuc3JjT2JqZWN0ID0gdmlkZW9TdHJlYW0uY3VycmVudDtcbiAgICAgICAgfVxuICAgIH0sIFt2aWRlb1JlZi5jdXJyZW50XSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMuc291bmRNb25pdG9yICYmICFwcm9wcy5pblZpZXcpIHtcbiAgICAgICAgICAgIGlmIChzb3VuZExldmVsID4gMykge1xuICAgICAgICAgICAgICAgIHNvdW5kTGV2ZWxDb3VudGVyLmN1cnJlbnQgPSAxMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc291bmRMZXZlbENvdW50ZXIuY3VycmVudCA+IDApIHtcbiAgICAgICAgICAgICAgICBzb3VuZExldmVsQ291bnRlci5jdXJyZW50LS07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByb3BzLnNvdW5kTW9uaXRvcihwcm9wcy5kYXRhLnVzZXJJZCwgc291bmRMZXZlbENvdW50ZXIuY3VycmVudCA9PT0gMCB8fCBhdWRpb011dGVkKTtcbiAgICAgICAgfVxuICAgIH0sIFtzb3VuZExldmVsXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoYXVkaW9NdXRlZCkge1xuICAgICAgICAgICAgc2V0U291bmRMZXZlbCgwKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy5zb3VuZE1vbml0b3IgJiYgIXByb3BzLmluVmlldykge1xuICAgICAgICAgICAgICAgIHByb3BzLnNvdW5kTW9uaXRvcihwcm9wcy5kYXRhLnVzZXJJZCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbYXVkaW9NdXRlZF0pO1xuXG4gICAgY29uc3QgaGFuZGxlQ2xvc2VEZXZpY2VNZW51ID0gKCkgPT4ge1xuICAgICAgICBzZXRBbmNob3JFbChudWxsKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25BVlNldHRpbmdzQ2hhbmdlID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKHByb3BzLmRhdGEudXNlcklkID09PSBwYXlsb2FkLnVzZXJJZCkge1xuICAgICAgICAgICAgaWYgKHByb3BzLmlzQ3VycmVudFVzZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgaWNvbiBtdXN0IHJlZmxlY3QgdGhlIEFDVFVBTCBwcm9kdWNlciwgbm90IHRoZSByZXF1ZXN0ZWQgc3RhdGU6XG4gICAgICAgICAgICAgICAgLy8gLSBtdXRlOiBmbGlwIHRoZSBpY29uIG9ubHkgb25jZSBzdG9wUHJvZHVjaW5nIGNvbmZpcm1zIHRoZSBwcm9kdWNlciBpc1xuICAgICAgICAgICAgICAgIC8vICAgY2xvc2VkIGFuZCB0aGUgdHJhY2sgc3RvcHBlZCAoaXRzIHN1Y2Nlc3MgY2FsbGJhY2spIOKAlCBzbyB3ZSBuZXZlciBzaG93XG4gICAgICAgICAgICAgICAgLy8gICBcIm11dGVkXCIgd2hpbGUgYXVkaW8gaXMgc3RpbGwgZ29pbmcgb3V0LlxuICAgICAgICAgICAgICAgIC8vIC0gdW5tdXRlOiBwcm9kdWNlKCkgZmxpcHMgdGhlIGljb24gb2ZmIG9ubHkgYWZ0ZXIgdGhlIHByb2R1Y2VyIGlzIGNyZWF0ZWQuXG4gICAgICAgICAgICAgICAgaWYgKHBheWxvYWQuYXVkaW9NdXRlZCkge1xuICAgICAgICAgICAgICAgICAgICBzdG9wUHJvZHVjaW5nKCdhdWRpbycsICgpID0+IHNldEF1ZGlvTXV0ZWQodHJ1ZSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGV2aWNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y2UoJ2F1ZGlvJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHBheWxvYWQudmlkZW9NdXRlZCkge1xuICAgICAgICAgICAgICAgICAgICBzdG9wUHJvZHVjaW5nKCd2aWRlbycsICgpID0+IHNldFZpZGVvTXV0ZWQodHJ1ZSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGV2aWNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y2UoJ3ZpZGVvJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRBdWRpb011dGVkKHBheWxvYWQuYXVkaW9NdXRlZCk7XG4gICAgICAgICAgICAgICAgc2V0VmlkZW9NdXRlZChwYXlsb2FkLnZpZGVvTXV0ZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChwcm9wcy5kYXRhICYmICFVdGlscy5pc051bGwocHJvcHMuZGF0YS5hdmF0YXJJZClcbiAgICAgICAgICAgICYmIHByb3BzLmRhdGEuYXZhdGFySWQgIT09ICd1bmRlZmluZWQnICYmIHByb3BzLmRhdGEuYXZhdGFySWQgIT09ICdudWxsJykge1xuICAgICAgICAgICAgc2V0RG93bmxvYWRVcmwobG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKSArICcvZG9jcy9hcGkvdjEvbWFuYWdlci9kb3dubG9hZC8nICsgcHJvcHMuZGF0YS5hdmF0YXJJZCArXG4gICAgICAgICAgICAgICAgJz9hY2Nlc3NfdG9rZW49JyArIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2FjY2Vzc1Rva2VuJykgKyAnJmlkVG9rZW49JyArIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lkVG9rZW4nKSk7XG4gICAgICAgIH1cbiAgICB9LCBbcHJvcHMuZGF0YV0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgLy8gUmVtb3RlIHRpbGVzIHJlZmxlY3QgdGhlIHBlZXIncyByZXBvcnRlZCBzdGF0ZS4gVGhlIENVUlJFTlQgdXNlcidzIGljb24gaXMgTk9UXG4gICAgICAgIC8vIHN5bmNlZCBmcm9tIHByb3BzIOKAlCBpdCBpcyBkcml2ZW4gb25seSBieSB0aGUgYWN0dWFsIHByb2R1Y2VyIChtdXRlIHNob3dzIG9uY2UgdGhlXG4gICAgICAgIC8vIHByb2R1Y2VyIGlzIGNvbmZpcm1lZCBzdG9wcGVkOyB1bm11dGUgb25jZSBwcm9kdWNlKCkgc3VjY2VlZHMpLCBzbyB0aGUgaWNvbiBjYW5cbiAgICAgICAgLy8gbmV2ZXIgY2xhaW0gXCJtdXRlZFwiIHdoaWxlIGF1ZGlvIGlzIHN0aWxsIGJlaW5nIHByb2R1Y2VkLlxuICAgICAgICBpZiAoIXByb3BzLmlzQ3VycmVudFVzZXIpIHtcbiAgICAgICAgICAgIHNldEF1ZGlvTXV0ZWQocHJvcHMuYXVkaW9NdXRlZCk7XG4gICAgICAgIH1cbiAgICB9LCBbcHJvcHMuYXVkaW9NdXRlZF0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFwcm9wcy5pc0N1cnJlbnRVc2VyKSB7XG4gICAgICAgICAgICBzZXRWaWRlb011dGVkKHByb3BzLnZpZGVvTXV0ZWQpO1xuICAgICAgICB9XG4gICAgfSwgW3Byb3BzLnZpZGVvTXV0ZWRdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChwcm9kdWNlclRyYW5zcG9ydCkge1xuICAgICAgICAgICAgLy8gQSAocmUpYXNzaWduZWQgdHJhbnNwb3J0IG1lYW5zIGV4aXN0aW5nIHByb2R1Y2VycyBsaXZlZCBvbiB0aGUgb2xkXG4gICAgICAgICAgICAvLyAobm93LWNsb3NlZCkgdHJhbnNwb3J0LiBUZWFyIHRoZW0gZG93biBwcm9wZXJseSDigJQgY2xvc2UgKyBzdG9wIHRoZVxuICAgICAgICAgICAgLy8gbG9jYWwgdHJhY2tzICsgbm90aWZ5IHRoZSBzZXJ2ZXIg4oCUIHNvIHByb2R1Y2UoKSByZWNyZWF0ZXMgdGhlbSBvbiB0aGVcbiAgICAgICAgICAgIC8vIG5ldyB0cmFuc3BvcnQgaW5zdGVhZCBvZiBlYXJseS1yZXR1cm5pbmcuIE5vLW9wIG9uIGZpcnN0IG1vdW50LlxuICAgICAgICAgICAgc3RvcFByb2R1Y2luZygndmlkZW8nKTtcbiAgICAgICAgICAgIHN0b3BQcm9kdWNpbmcoJ2F1ZGlvJyk7XG5cbiAgICAgICAgICAgIGlmICghcHJvcHMudmlkZW9NdXRlZCkge1xuICAgICAgICAgICAgICAgIHByb2R1Y2UoJ3ZpZGVvJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXByb3BzLmF1ZGlvTXV0ZWQpIHtcbiAgICAgICAgICAgICAgICBwcm9kdWNlKCdhdWRpbycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW3Byb2R1Y2VyVHJhbnNwb3J0XSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzZXRQcm9kdWNlclRyYW5zcG9ydChwcm9wcy5wcm9kdWNlclRyYW5zcG9ydCk7XG4gICAgfSwgW3Byb3BzLnByb2R1Y2VyVHJhbnNwb3J0XSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMuaXNDdXJyZW50VXNlcikge1xuICAgICAgICAgICAgcHJvcHMub25BdWRpb0RldmljZUNoYW5nZShzZWxlY3RlZEF1ZGlvRGV2aWNlKTtcbiAgICAgICAgICAgIHN0b3BQcm9kdWNpbmcoJ2F1ZGlvJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEF1ZGlvRGV2aWNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcHJvZHVjZXJUcmFuc3BvcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVByb2R1Y2VyVHJhbnNwb3J0KCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWF1ZGlvTXV0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2UoJ2F1ZGlvJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIFtzZWxlY3RlZEF1ZGlvRGV2aWNlXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAvLyBPbmNlIHRoZSBEZXZpY2UgaXMgcmVhZHksIGNvbnN1bWUgdGhlIHByb2R1Y2VycyB3ZSBhbHJlYWR5IGtub3cgYWJvdXRcbiAgICAgICAgLy8gYW5kIHJlcGxheSBhbnkgdGhhdCBhcnJpdmVkIGJlZm9yZSB3ZSB3ZXJlIHJlYWR5LiBSZWN2IHRyYW5zcG9ydHNcbiAgICAgICAgLy8gdGhlbXNlbHZlcyBhcmUgY3JlYXRlZCBqdXN0LWluLXRpbWUgaW5zaWRlIGNvbnN1bWUoKSAocGVyIGtpbmQpLCBzbyB0aGVcbiAgICAgICAgLy8gdHJpZ2dlciBoZXJlIGlzIHRoZSBEZXZpY2UsIG5vdCBhIHRyYW5zcG9ydC5cbiAgICAgICAgaWYgKGRldmljZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0RFVklDRSBSRUFEWSBXSVRIIFBST0RVQ0VSUyA6ICcsIHByb3BzLmRhdGEucHJvZHVjZXJzKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy5kYXRhLnByb2R1Y2Vycykge1xuICAgICAgICAgICAgICAgIG9uTmV3UHJvZHVjZXJzKHByb3BzLmRhdGEucHJvZHVjZXJzLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb25OZXdQcm9kdWNlcnMoZmFpbGVkUHJvZHVjZXJzRHVlVG9OdWxsVHJhbnNwb3J0LCB0cnVlKTtcbiAgICAgICAgICAgIGZhaWxlZFByb2R1Y2Vyc0R1ZVRvTnVsbFRyYW5zcG9ydC5zcGxpY2UoMCwgZmFpbGVkUHJvZHVjZXJzRHVlVG9OdWxsVHJhbnNwb3J0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICB9LCBbZGV2aWNlXSk7XG5cbiAgICBjb25zdCBjcmVhdGVQcm9kdWNlclRyYW5zcG9ydCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgc2V0UHJvZHVjZXJUcmFuc3BvcnQoYXdhaXQgbWVkaWFTb3VwSGVscGVyLmluaXRQcm9kdWNlclRyYW5zcG9ydChwcm9wcy5kZXZpY2UsIHByb3BzLm1lZXRpbmdJZCxcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lKSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZURldmljZXNDaGFuZ2VkID0gKGRldmljZXMpID0+IHtcbiAgICAgICAgbGV0IGF1ZGlvRGV2aWNlTGlzdCA9IFtdO1xuICAgICAgICBkZXZpY2VzLmZvckVhY2goKGRldmljZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCdhdWRpb2lucHV0JyA9PT0gZGV2aWNlLmtpbmQpIHtcbiAgICAgICAgICAgICAgICBhdWRpb0RldmljZUxpc3QucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBkZXZpY2UuZGV2aWNlSWQsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBkZXZpY2UubGFiZWxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgc2V0QXVkaW9EZXZpY2VzKGF1ZGlvRGV2aWNlTGlzdCk7XG5cbiAgICAgICAgaWYgKGF1ZGlvRGV2aWNlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZEF1ZGlvRGV2aWNlKGF1ZGlvRGV2aWNlTGlzdFswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZEF1ZGlvRGV2aWNlKG51bGwpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZjRXZlbnRNYW5hZ2VyLnJlbW92ZVN1YnNjcmlwdGlvbnMoZXZlbnRIYW5kbGVyKTtcbiAgICAgICAgdmNFdmVudE1hbmFnZXIuYWRkU3Vic2NyaXB0aW9ucyhldmVudEhhbmRsZXIsIFZDRXZlbnRUeXBlLkFVRElPX1ZJU1VBTF9TRVRUSU5HU19DSEFOR0VELFxuICAgICAgICAgICAgVkNFdmVudFR5cGUuUkFJU0VfSEFORCwgVkNFdmVudFR5cGUuTE9XRVJfSEFORCwgVkNFdmVudFR5cGUuTkVXX1BST0RVQ0VSUywgVkNFdmVudFR5cGUuQ09OU1VNRVJfQ0xPU0VELFxuICAgICAgICAgICAgVkNFdmVudFR5cGUuQVVESU9fTEVWRUwpO1xuXG4gICAgICAgIGlmIChwcm9wcy5pc0N1cnJlbnRVc2VyKSB7XG4gICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLm9uZGV2aWNlY2hhbmdlID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKChkZXZpY2VzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlRGV2aWNlc0NoYW5nZWQoZGV2aWNlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKVxuICAgICAgICAgICAgICAgIC50aGVuKChkZXZpY2VzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVEZXZpY2VzQ2hhbmdlZChkZXZpY2VzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcHMuaXNDdXJyZW50VXNlcikge1xuICAgICAgICAgICAgY29uc3VtZUZhaWxlZFByb2R1Y2VycygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCc9PT09PT09PT09PT09PT09PT09PT09REVTVFJPWUlORyBQQVJUSUNJUEFOVD09PT09PT09PT09PT09PT09PT09PT09PT0gOiAnICsgcHJvcHMuZGF0YS51c2VySWQpO1xuICAgICAgICAgICAgdW5tb3VudGVkUmVmLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAocHJvcHMuaXNDdXJyZW50VXNlcikge1xuICAgICAgICAgICAgICAgIC8vIFJlbGVhc2UgdGhlIGdsb2JhbCBkZXZpY2VjaGFuZ2UgaGFuZGxlciB0aGlzIGNvbXBvbmVudCBpbnN0YWxsZWQg4oCUXG4gICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGl0IHN1cnZpdmVzIHVubW91bnQgYW5kIGZpcmVzIGludG8gc3RhbGUgY29tcG9uZW50IHN0YXRlLlxuICAgICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMub25kZXZpY2VjaGFuZ2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIHN0b3BQcm9kdWNpbmcoJ2F1ZGlvJyk7XG4gICAgICAgICAgICAgICAgc3RvcFByb2R1Y2luZygndmlkZW8nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGNvbnN1bWVycykge1xuICAgICAgICAgICAgICAgIHJlbW92ZUNvbnN1bWVyKGtleSwgJ3ZpZGVvJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFN0b3AgZXZlcnkgYXVkaW8tbGV2ZWwgbWV0ZXIgKHNlbGYgbWljICsgYWxsIGNvbnN1bWVkIHN0cmVhbXMpLlxuICAgICAgICAgICAgbWV0ZXJzLmN1cnJlbnQuZm9yRWFjaCgoc3RvcCkgPT4gc3RvcCgpKTtcbiAgICAgICAgICAgIG1ldGVycy5jdXJyZW50LmNsZWFyKCk7XG5cbiAgICAgICAgICAgIHZjRXZlbnRNYW5hZ2VyLnJlbW92ZVN1YnNjcmlwdGlvbnMoZXZlbnRIYW5kbGVyKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICAvLyBNZXRlciBhIHN0cmVhbSBhbmQgYnJvYWRjYXN0IGl0cyBsZXZlbCB1bmRlciBgdXNlcklkYC4gS2V5ZWQgc28gd2UgY2FuXG4gICAgLy8gc3RvcC9yZXBsYWNlIGl0IHdoZW4gdGhlIGNvbnN1bWVyIGNsb3NlcyBvciB0aGUgcHJvZHVjZXIgcmVzdGFydHMuXG4gICAgY29uc3Qgc3RhcnRNZXRlciA9IChrZXksIHN0cmVhbSwgdXNlcklkKSA9PiB7XG4gICAgICAgIHN0b3BNZXRlcihrZXkpO1xuICAgICAgICBjb25zdCBzdG9wID0gc3RhcnRBdWRpb0xldmVsTWV0ZXIoc3RyZWFtLCAobGV2ZWwpID0+IHtcbiAgICAgICAgICAgIHZjRXZlbnRNYW5hZ2VyLmZpcmVFdmVudChWQ0V2ZW50VHlwZS5BVURJT19MRVZFTCwge3BheWxvYWQ6IHt1c2VySWQsIGxldmVsfX0pO1xuICAgICAgICB9KTtcbiAgICAgICAgbWV0ZXJzLmN1cnJlbnQuc2V0KGtleSwgc3RvcCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHN0b3BNZXRlciA9IChrZXkpID0+IHtcbiAgICAgICAgY29uc3Qgc3RvcCA9IG1ldGVycy5jdXJyZW50LmdldChrZXkpO1xuICAgICAgICBpZiAoc3RvcCkge1xuICAgICAgICAgICAgc3RvcCgpO1xuICAgICAgICAgICAgbWV0ZXJzLmN1cnJlbnQuZGVsZXRlKGtleSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcHJvZHVjZSA9IGFzeW5jICh0eXBlKSA9PiB7XG4gICAgICAgIGlmICghZGV2aWNlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdObyBhdmFpbGFibGUgZGV2aWNlJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWRldmljZS5jYW5Qcm9kdWNlKCd2aWRlbycpICYmIHR5cGUgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Nhbm5vdCBwcm9kdWNlIHZpZGVvJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNlbGVjdGVkQXVkaW9EZXZpY2UgJiYgdHlwZSA9PT0gJ2F1ZGlvJykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignTm8gYXVkaW8gZGV2aWNlIHNlbGVjdGVkJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvZHVjZXJzLmhhcyh0eXBlKSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1Byb2R1Y2VyIGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIHR5cGUgJyArIHR5cGUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG1lZGlhQ29uc3RyYWludHM7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnYXVkaW8nOlxuICAgICAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludHMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGRldmljZUlkOiBzZWxlY3RlZEF1ZGlvRGV2aWNlLmlkLFxuICAgICAgICAgICAgICAgICAgICBhdWRpbzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdmlkZW86IGZhbHNlXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludHMgPSBWSURFT19DT05TVFJBSU5UUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKG1lZGlhQ29uc3RyYWludHMpO1xuICAgICAgICBjb25zdCB0cmFjayA9IHR5cGUgPT09ICdhdWRpbycgPyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSA6IHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICB0cmFja1xuICAgICAgICB9O1xuXG4gICAgICAgIGF1ZGlvUmVmLmN1cnJlbnQgPSBzdHJlYW07XG4gICAgICAgIGlmICh0eXBlID09PSAnYXVkaW8nKSB7XG4gICAgICAgICAgICAvLyBNZXRlciB0aGUgbG9jYWwgbWljIHNvIHRoZSBzZWxmIHRpbGUgaGlnaGxpZ2h0cyB3aGVuIHlvdSBzcGVhay5cbiAgICAgICAgICAgIHN0YXJ0TWV0ZXIoJ3NlbGYtYXVkaW8nLCBzdHJlYW0sIHByb3BzLmRhdGEudXNlcklkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcHMuaXNIb3N0ICYmIHR5cGUgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgIG1lZGlhUmVjb3JkZXIuYWRkVHJhY2socHJvcHMuZGF0YS51c2VySWQsIHRyYWNrKTtcbiAgICAgICAgICAgIHRyYWNrcy5jdXJyZW50LnNldEF1ZGlvVHJhY2sodHJhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgIHBhcmFtcy5lbmNvZGluZ3MgPSBWSURFT19FTkNPRElOR1M7XG4gICAgICAgICAgICBwYXJhbXMuY29kZWNPcHRpb25zID0gVklERU9fQ09ERUNfT1BUSU9OUztcbiAgICAgICAgICAgIHRyYWNrcy5jdXJyZW50LnNldFZpZGVvVHJhY2sodHJhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHByb2R1Y2VyO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcHJvZHVjZXIgPSBhd2FpdCBwcm9kdWNlclRyYW5zcG9ydC5wcm9kdWNlKHBhcmFtcyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgICAgLy8gU3RvcCB0aGUganVzdC1jYXB0dXJlZCB0cmFjayBzbyB0aGUgbWljL2NhbSBpc24ndCBsZWZ0IGxpdmUgYWZ0ZXIgYSBmYWlsZWQgcHJvZHVjZS5cbiAgICAgICAgICAgIHRyYWNrLnN0b3AoKTtcbiAgICAgICAgICAgIC8vIEEgZmF0YWwgUlRQLWV4dGVuc2lvbiBjb2xsaXNpb24gb24gY3JlYXRlT2ZmZXIgY2FuJ3QgYmUgcmVjb3ZlcmVkIGluLXBsYWNlO1xuICAgICAgICAgICAgLy8gYXNrIHRoZSB1c2VyIHRvIHJlam9pbi4gVGhlIGljb24gaXMgTk9UIGZsaXBwZWQgdG8gdW5tdXRlZCAocHJvZHVjZSBmYWlsZWQpLlxuICAgICAgICAgICAgaWYgKGlzUnRwQ29sbGlzaW9uRXJyb3IoZSkpIHtcbiAgICAgICAgICAgICAgICB2Y0V2ZW50TWFuYWdlci5maXJlRXZlbnQoVkNFdmVudFR5cGUuU1lTVEVNX0FMRVJULCB7cGF5bG9hZDoge21lc3NhZ2U6IFJFSk9JTl9BTEVSVF9NRVNTQUdFfX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb2R1Y2VyKSB7XG4gICAgICAgICAgICAvLyBQcm9kdWNpbmcgaXMgY29uZmlybWVkIOKAlCBub3cgKGFuZCBvbmx5IG5vdykgY2xlYXIgdGhlIG11dGVkIGljb24gZm9yIHRoaXMga2luZC5cbiAgICAgICAgICAgIGlmIChwcm9wcy5pc0N1cnJlbnRVc2VyKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0QXVkaW9NdXRlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndmlkZW8nKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZpZGVvTXV0ZWQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcHJvZHVjZXJUcmFuc3BvcnQuZ2V0U3RhdHMoKVxuICAgICAgICAgICAgICAgIC50aGVuKChkYXRhKSA9PiBjb25zb2xlLmxvZyhkYXRhKSk7XG4gICAgICAgICAgICBwcm9kdWNlcnMuc2V0KHR5cGUsIHByb2R1Y2VyKTtcblxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgICAgICB2aWRlb1JlZi5jdXJyZW50LnNyY09iamVjdCA9IHN0cmVhbTtcbiAgICAgICAgICAgICAgICB2aWRlb1N0cmVhbS5jdXJyZW50ID0gc3RyZWFtO1xuICAgICAgICAgICAgICAgIHNldFZpZGVvUmVmcmVzaGVyKCF2aWRlb1JlZnJlc2hlcik7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coc3RyZWFtKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcHJvZHVjZXIub24oJ3RyYW5zcG9ydGNsb3NlJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0cmVhbS5zcmNPYmplY3QuZ2V0VHJhY2tzKClcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKHRyYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFjay5zdG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcHJvZHVjZXJzLmRlbGV0ZSh0eXBlKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBwcm9kdWNlci5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RyZWFtLnNyY09iamVjdC5nZXRUcmFja3MoKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAodHJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrLnN0b3AoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBwcm9kdWNlcnMuZGVsZXRlKHR5cGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgY29uc3VtZUZhaWxlZFByb2R1Y2VycyA9ICgpID0+IHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAodW5tb3VudGVkUmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChkZXZpY2UpIHtcbiAgICAgICAgICAgICAgICBvbk5ld1Byb2R1Y2VycyhmYWlsZWRQcm9kdWNlcnNEdWVUb051bGxUcmFuc3BvcnQsIHRydWUpO1xuICAgICAgICAgICAgICAgIGZhaWxlZFByb2R1Y2Vyc0R1ZVRvTnVsbFRyYW5zcG9ydC5zcGxpY2UoMCwgZmFpbGVkUHJvZHVjZXJzRHVlVG9OdWxsVHJhbnNwb3J0Lmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgY29uc3VtZUZhaWxlZFByb2R1Y2VycygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCA1MDAwKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdG9wUHJvZHVjaW5nID0gKHR5cGUsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgIGlmICghcHJvZHVjZXJzLmhhcyh0eXBlKSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1RoZXJlIGlzIG5vIHByb2R1Y2VyIGZvciB0aGlzIHR5cGUgJyArIHR5cGUpO1xuICAgICAgICAgICAgLy8gTm90aGluZyBpcyBiZWluZyBwcm9kdWNlZCwgc28gdGhlIHN0b3AgaXMgdHJpdmlhbGx5IHNhdGlzZmllZCDigJQgbGV0IHRoZVxuICAgICAgICAgICAgLy8gY2FsbGVyIChlLmcuIHRoZSBtdXRlIHRvZ2dsZSkgdHJlYXQgdGhpcyBhcyBhIGNvbmZpcm1lZCBcInN0b3BwZWRcIi5cbiAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcHJvZHVjZXJJZCA9IHByb2R1Y2Vycy5nZXQodHlwZSkuaWQ7XG4gICAgICAgIGNvbnNvbGUubG9nKCdDbG9zZSBwcm9kdWNlcicsIHByb2R1Y2VySWQpO1xuXG4gICAgICAgIHByb2R1Y2Vycy5nZXQodHlwZSlcbiAgICAgICAgICAgIC5jbG9zZSgpO1xuICAgICAgICBwcm9kdWNlcnMuZGVsZXRlKHR5cGUpO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgICAgdHJhY2tzLmN1cnJlbnQuc3RvcFZpZGVvVHJhY2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlID09PSAnYXVkaW8nKSB7XG4gICAgICAgICAgICB0cmFja3MuY3VycmVudC5zdG9wQXVkaW9UcmFjaygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coJ0NMT1NJTkcgUFJPRFVDRVIgT0YgSUQgOiAnICsgcHJvZHVjZXJJZCk7XG4gICAgICAgIHNvY2tldE1hbmFnZXIuZW1pdEV2ZW50KFZDRXZlbnRUeXBlLlBST0RVQ0VSX0NMT1NFRCwge1xuICAgICAgICAgICAgdXNlcklkOiBwcm9wcy5kYXRhLnVzZXJJZCxcbiAgICAgICAgICAgIHByb2R1Y2VySWQsXG4gICAgICAgICAgICByb29tSWQ6IHByb3BzLm1lZXRpbmdJZFxuICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKCdQUk9EVUNFUl9DTE9TRUQgRVJST1IgOiAnLCBlKSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTmV3UHJvZHVjZXJzID0gKHByb2R1Y2VycywgbG9hZGluZyA9IGZhbHNlKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiPT09PT09IFBST0RVQ0VSUyBSRUNFSVZFRCA6IFsgXCIgKyBKU09OLnN0cmluZ2lmeShwcm9kdWNlcnMpICsgXCIgXSA9PT09PT09XCIpO1xuICAgICAgICBmb3IgKGNvbnN0IHByb2R1Y2VyIG9mIHByb2R1Y2Vycykge1xuICAgICAgICAgICAgaWYgKGRldmljZSkge1xuICAgICAgICAgICAgICAgIGlmIChwcm9kdWNlci51c2VySWQgPT09IHByb3BzLmRhdGEudXNlcklkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9kdWNlci5raW5kID09PSAndmlkZW8nICYmICFwcm9kdWNlci5zY3JlZW5TaGFyaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQ0FMTElORyBDT05TVU1FIEZST00gT04gTkVXIFBST0RVQ0VSUyBGT1IgOiAnICsgcHJvcHMuZGF0YS51c2VySWQgKyAnIC0gJyArIHByb2R1Y2VyLnByb2R1Y2VySWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZShwcm9kdWNlci5wcm9kdWNlcklkLCBwcm9kdWNlci5raW5kLCBsb2FkaW5nLCBwcm9kdWNlci51c2VySWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmlzQ3VycmVudFVzZXIgfHwgbG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgc21hbGwgcGFydGljaXBhbnQgYm94IGF0IHRoZSBib3R0b20gYmVsb25naW5nIHRvIHRoZSBjdXJyZW50IHVzZXIgbXVzdCBjb25zdW1lIGFsbCBhdWRpb1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2Ugd2UgZG8gbm90IHdhbnQgdG8gZGlzdHVyYiB0aGUgYXVkaW8gZHVlIHRvIGFueSByZW5kZXJpbmcgc3VjaCBhcyBCcmluZyB0byB2aWV3XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9kdWNlci5raW5kID09PSAnYXVkaW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lKHByb2R1Y2VyLnByb2R1Y2VySWQsIHByb2R1Y2VyLmtpbmQsIGxvYWRpbmcsIHByb2R1Y2VyLnVzZXJJZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZhaWxlZFByb2R1Y2Vyc0R1ZVRvTnVsbFRyYW5zcG9ydC5wdXNoKHByb2R1Y2VyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZyhcIj09PT09PSBQUk9EVUNFUlMgVEhBVCBDT1VMRCBOT1QgQkUgQ09OU1VNRVMgOiBbIFwiICsgSlNPTi5zdHJpbmdpZnkoZmFpbGVkUHJvZHVjZXJzRHVlVG9OdWxsVHJhbnNwb3J0KSArIFwiIF0gPT09PT09PVwiKTtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVtb3ZlQ29uc3VtZXIgPSAoY29uc3VtZXJJZCwga2luZCwgdXNlcklkKSA9PiB7XG4gICAgICAgIC8vIFN0b3AgYW55IGFjdGl2ZS1zcGVha2VyIG1ldGVyIGF0dGFjaGVkIHRvIHRoaXMgY29uc3VtZXIncyBzdHJlYW0uXG4gICAgICAgIHN0b3BNZXRlcihjb25zdW1lcklkKTtcbiAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgIGlmICh2aWRlb1N0cmVhbS5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKHZpZGVvU3RyZWFtLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9TdHJlYW0uY3VycmVudC5nZXRUcmFja3MoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKHRyYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2suc3RvcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGtpbmQgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgIGxldCBhdWRpb0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb25zdW1lcklkKTtcbiAgICAgICAgICAgIGlmIChhdWRpb0VsZW1lbnQgJiYgYXVkaW9FbGVtZW50LnNyY09iamVjdCkge1xuICAgICAgICAgICAgICAgIGF1ZGlvRWxlbWVudC5zcmNPYmplY3QuZ2V0VHJhY2tzKClcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKHRyYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFjay5zdG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHVzZXJJZCAmJiBtZWRpYVJlY29yZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lZGlhUmVjb3JkZXIucmVtb3ZlVHJhY2sodXNlcklkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRCeUlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJvcHMuZGF0YS51c2VySWQgKyAnLWF1ZGlvLWVsLWNvbnRhaW5lcicpO1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50QnlJZCkge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50QnlJZC5yZW1vdmVDaGlsZChhdWRpb0VsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN1bWVycy5kZWxldGUoY29uc3VtZXJJZCk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHJldHJ5Q29uc3VtZShraW5kLCB1c2VySWQsIGUsIHJldHJpZXMsIHByb2R1Y2VySWQsIGxvYWRpbmcpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0ZBSUxFRCBUTyBDT05TVU1FICcgKyBraW5kICsgJyBGUk9NICcgKyB1c2VySWQpO1xuICAgICAgICBjb25zb2xlLmxvZyhlKTtcblxuICAgICAgICBpZiAocmV0cmllcyA8IDEwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUkUtVFJZSU5HIFsnICsgcmV0cmllcyArICddJyk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodW5tb3VudGVkUmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdW1lKHByb2R1Y2VySWQsIGtpbmQsIGxvYWRpbmcsIHVzZXJJZCwgcmV0cmllcyk7XG4gICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDT01QTEVURUxZIEZBSUxFRCBUTyBDT05TVU1FICcgKyBraW5kICsgJyBGUk9NICcgKyB1c2VySWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29uc3VtZSA9IGFzeW5jIChwcm9kdWNlcklkLCBraW5kLCBsb2FkaW5nLCB1c2VySWQsIHJldHJpZXMgPSAwKSA9PiB7XG4gICAgICAgIC8vIEdldCAoYW5kIGxhemlseSBjcmVhdGUpIHRoZSByZWN2IHRyYW5zcG9ydCBmb3IgdGhpcyBraW5kLiBhdWRpbyBhbmRcbiAgICAgICAgLy8gdmlkZW8gcmlkZSBzZXBhcmF0ZSB0cmFuc3BvcnRzLCBzbyBhIGNsb3NlZCBjb25zdW1lcidzIG0tc2VjdGlvbiBpc1xuICAgICAgICAvLyBuZXZlciByZWN5Y2xlZCBhY3Jvc3Mga2luZHMg4oCUIHdoaWNoIGlzIHdoYXQgdHJpZ2dlcmVkIHRoZSBSVFBcbiAgICAgICAgLy8gZXh0ZW5zaW9uLWlkIGNvbGxpc2lvbi5cbiAgICAgICAgY29uc3QgdHJhbnNwb3J0ID0gYXdhaXQgcHJvcHMuZ2V0UmVjdlRyYW5zcG9ydChraW5kKTtcbiAgICAgICAgaWYgKCF0cmFuc3BvcnQpIHtcbiAgICAgICAgICAgIHJldHJ5Q29uc3VtZShraW5kLCB1c2VySWQsIG5ldyBFcnJvcigncmVjdiB0cmFuc3BvcnQgdW5hdmFpbGFibGUgZm9yICcgKyBraW5kKSwgcmV0cmllcywgcHJvZHVjZXJJZCwgbG9hZGluZyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbWVkaWFTb3VwSGVscGVyLmdldENvbnN1bWVTdHJlYW0ocHJvZHVjZXJJZCwgZGV2aWNlLnJ0cENhcGFiaWxpdGllcywgdHJhbnNwb3J0LCBwcm9wcy5tZWV0aW5nSWQsXG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSwga2luZClcbiAgICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICBjb25zdW1lcixcbiAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSxcbiAgICAgICAgICAgICAgICAgICAgIGtpbmRcbiAgICAgICAgICAgICAgICAgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3VtZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVycy5zZXQoY29uc3VtZXIuaWQsIGNvbnN1bWVyKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1DT05TVU1FPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSA6ICcgKyBraW5kICsgJyBGT1IgOiAnICsgdXNlcklkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChraW5kID09PSAndmlkZW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZGVvUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9SZWYuY3VycmVudC5zcmNPYmplY3QgPSBzdHJlYW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9TdHJlYW0uY3VycmVudCA9IHN0cmVhbTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZpZGVvTXV0ZWQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZpZGVvUmVmcmVzaGVyKCF2aWRlb1JlZnJlc2hlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tzLmN1cnJlbnQuc2V0VmlkZW9UcmFjayhzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcy5pc0N1cnJlbnRVc2VyIHx8IGxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGF1ZGlvRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2F1ZGlvJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRWxlbWVudC5zcmNPYmplY3QgPSBzdHJlYW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRWxlbWVudC5pZCA9IGNvbnN1bWVyLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb0VsZW1lbnQucGxheXNpbmxpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9FbGVtZW50LmF1dG9wbGF5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lZXRpbmctYXVkaW8tZWwtY29udGFpbmVyJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmRDaGlsZChhdWRpb0VsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1ldGVyIHRoaXMgcGFydGljaXBhbnQncyBhdWRpbyBmb3IgYWN0aXZlLXNwZWFrZXIgaGlnaGxpZ2h0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE1ldGVyKGNvbnN1bWVyLmlkLCBzdHJlYW0sIHVzZXJJZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzLmlzSG9zdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFSZWNvcmRlci5hZGRUcmFjayh1c2VySWQsIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZXIub24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYWNrZW5kZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coa2luZCArIFwiIENPTlNVTUVSIFRSQUNLIEVOREVEIEZPUiBcIiArIHVzZXJJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNvbnN1bWVyKGNvbnN1bWVyLmlkLCBraW5kLCB1c2VySWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHdWFyZDogdGhlIHBhcnRpY2lwYW50IG1heSBoYXZlIGxlZnQsIHNvIGZpbmQoKSBjYW4gYmUgdW5kZWZpbmVkIOKAlFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkaW5nIC52aWRlb011dGVkLy5hdWRpb011dGVkIG9uIGl0IHRocmV3LiBObyBwYXJ0aWNpcGFudCDihpIgbm8gcmV0cnkuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYWNrRW5kZWRQYXJ0aWNpcGFudCA9IHBhcnRpY2lwYW50cy5maW5kKChwKSA9PiBwLnVzZXJJZCA9PT0gdXNlcklkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYWNrRW5kZWRQYXJ0aWNpcGFudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKChraW5kID09PSAndmlkZW8nICYmICF0cmFja0VuZGVkUGFydGljaXBhbnQudmlkZW9NdXRlZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoa2luZCA9PT0gJ2F1ZGlvJyAmJiAhdHJhY2tFbmRlZFBhcnRpY2lwYW50LmF1ZGlvTXV0ZWQpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnlDb25zdW1lKGtpbmQsIHVzZXJJZCwgbmV3IEVycm9yKCd0cmFja2VuZGVkIHdoaWxlICcgKyBraW5kICsgJyBpcyBOT1QgbXV0ZWQnKSwgcmV0cmllcywgcHJvZHVjZXJJZCwgbG9hZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lci5vbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNwb3J0Y2xvc2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coa2luZCArIFwiIENPTlNVTUVSIENMT1NFRCBGT1IgXCIgKyB1c2VySWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVDb25zdW1lcihjb25zdW1lci5pZCwga2luZCwgdXNlcklkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgcmV0cnlDb25zdW1lKGtpbmQsIHVzZXJJZCwgZSwgcmV0cmllcywgcHJvZHVjZXJJZCwgbG9hZGluZyk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBnZXRQYXJ0aWNpcGFudE5hbWUgPSAoKSA9PiB7XG4gICAgICAgIGxldCBuYW1lID0gcHJvcHMuZGF0YS5uYW1lO1xuXG4gICAgICAgIGlmIChVdGlscy5pc051bGwocHJvcHMuZGF0YS51c2VySWQpKSB7XG4gICAgICAgICAgICBuYW1lID0gYCR7bmFtZX0gKEd1ZXN0KWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmFtZTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7J2NvbC0qLSogJyArIChwcm9wcy5pc0N1cnJlbnRVc2VyID8gJ21lZXRpbmctcGFydGljaXBhbnQtY29udGFpbmVyLWN1cnJlbnQtdXNlcicgOiAnbWVldGluZy1wYXJ0aWNpcGFudC1jb250YWluZXInKX1gfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogcHJvcHMucGFkZGluZyA/IHByb3BzLnBhZGRpbmcgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBwcm9wcy5oZWlnaHQgPyBwcm9wcy5oZWlnaHQgOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICcxMnB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBwcm9wcy5pc0N1cnJlbnRVc2VyID8gJyMxZjI5MzcnIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogcHJvcHMuaXNDdXJyZW50VXNlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJzJweCBzb2xpZCAnICsgKGFwcGxpY2F0aW9uTWFuYWdlci5nZXRBcHBsaWNhdGlvblByaW1hcnlDb2xvcigpIHx8ICcjMWEzYzVlJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA2KScsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBY3RpdmUtc3BlYWtlciBoaWdobGlnaHQ6IGFuIGluc2V0IHJpbmcgKHRoZSB0aWxlIGNsaXBzXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVyZmxvdywgc28gYW4gb3V0c2V0IHNoYWRvdyB3b3VsZCBiZSBjdXQgb2ZmKS5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJveFNoYWRvdzogKCFhdWRpb011dGVkICYmIHNvdW5kTGV2ZWwgPiBTUEVBS0lOR19MRVZFTClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdpbnNldCAwIDAgMCAzcHggJyArIChhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0QXBwbGljYXRpb25QcmltYXJ5Q29sb3IoKSB8fCAnIzIyYzU1ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiAnYm94LXNoYWRvdyAxMjBtcyBlYXNlLW91dCdcbiAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmlkZW9NdXRlZCB8fCAhdmlkZW9SZWYuY3VycmVudCB8fCAhdmlkZW9SZWYuY3VycmVudC5zcmNPYmplY3QpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY2VudGVyZWQtZmxleC1ib3gnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206IHByb3BzLnNpemluZyA9PT0gJ3NtJyA/ICc4cHgnIDogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtwcm9wcy5zaXppbmcgPT09ICdzbScgPyAnYXZhdGFyLXdyYXBwZXItc20nIDogJ2F2YXRhci13cmFwcGVyJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IChwcm9wcy5zaXppbmcgPT09ICdzbScgPyA3MiA6IDExMikgKyAncHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogKHByb3BzLnNpemluZyA9PT0gJ3NtJyA/IDcyIDogMTEyKSArICdweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94U2hhZG93OiAhYXVkaW9NdXRlZCAmJiBzb3VuZExldmVsID4gM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcwIDAgMCAnICsgKDMgKyBzb3VuZExldmVsIC8gMTIpICsgJ3B4ICcgKyAoYXBwbGljYXRpb25NYW5hZ2VyLmdldEFwcGxpY2F0aW9uUHJpbWFyeUNvbG9yKCkgfHwgJyMwMDQ3NmEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiAnYm94LXNoYWRvdyA5MG1zIGxpbmVhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzNhNDY1NCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjZmZmJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17cHJvcHMuc2l6aW5nID09PSAnbWQnID8gJ2F2YXRhciBhdmF0YXItbWQnIDogcHJvcHMuc2l6aW5nID09PSAnc20nID8gJ2F2YXRhciBhdmF0YXItc20nIDogJ2F2YXRhcid9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogcHJvcHMuc2l6aW5nID09PSAnc20nID8gJzIwcHgnIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZFVybCA/IDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRSZXBlYXQ6ICduby1yZXBlYXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRTaXplOiAnY292ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRQb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNTAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZEltYWdlOiBgdXJsKCR7ZG93bmxvYWRVcmx9KWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPiA6IFV0aWxzLmdldEluaXRpYWxzKHByb3BzLmRhdGEubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmlkZW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtwcm9wcy5kYXRhLnVzZXJJZCArICctdmlkZW8nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9ezY0MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzIwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b1BsYXkgcmVmPXt2aWRlb1JlZn0gbXV0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RGaXQ6ICdjb3ZlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBwcm9wcy5pc0N1cnJlbnRVc2VyID8gJ3NjYWxlWCgtMSknIDogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogJzAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICh2aWRlb011dGVkIHx8ICF2aWRlb1JlZi5jdXJyZW50IHx8ICF2aWRlb1JlZi5jdXJyZW50LnNyY09iamVjdCkgPyAnbm9uZScgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qV2UgbmVlZCB0aGlzIGVsZW1lbnQgdG8gY2FwdHVyZSByZWNvcmRpbmcgc291bmQqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5pc0hvc3QgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF1ZGlvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17cHJvcHMuZGF0YS51c2VySWQgKyAnLWF1ZGlvJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9QbGF5IHJlZj17YXVkaW9SZWZ9IG11dGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdub25lJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3Byb3BzLnNpemluZyA9PT0gJ3NtJyA/ICduYW1lLWxhYmVsLXNtJyA6ICduYW1lLWxhYmVsJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogJzAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBwcm9wcy5zaXppbmcgPT09ICdzbScgPyAnNnB4JyA6ICc4cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2ZsZXgtZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FwOiAnNHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoOiAnNzAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IHByb3BzLnNpemluZyA9PT0gJ3NtJyA/ICcxcHggOHB4JyA6ICcycHggMTBweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc2cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLDAsMCwwLjU1KScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyNmZmYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IHByb3BzLnNpemluZyA9PT0gJ3NtJyA/ICcxMXB4JyA6ICcxM3B4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDUwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDEuNCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAnYXV0bydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IXByb3BzLmlzQ3VycmVudFVzZXIgJiYgZ2V0UGFydGljaXBhbnROYW1lKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuaXNDdXJyZW50VXNlciAmJiAnWW91J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9wcy5pc0N1cnJlbnRVc2VyICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7bWFyZ2luTGVmdDogJzRweCcsIGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGp1c3RpZnlDb250ZW50OiAnZmxleC1lbmQnLCBnYXA6ICc0cHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5pc0hvc3QgJiYgIWF1ZGlvTXV0ZWQgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5vbkhvc3RBdWRpb011dGUocHJvcHMuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzI0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcyNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjZmZmJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLDAsMCwwLjU1KScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzZweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnTUlDJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBhdWRpb011dGVkID8gJ2lubGluZS1mbGV4JyA6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyNmZmYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwwLDAsMC41NSknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzZweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzJweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnTUlDX09GRid9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5pc0hvc3QgJiYgIXZpZGVvTXV0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMub25Ib3N0VmlkZW9NdXRlKHByb3BzLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcyNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcyNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyNmZmYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwwLDAsMC41NSknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzZweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnQ0FNRVJBJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuaXNDdXJyZW50VXNlciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e2Rpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGp1c3RpZnlDb250ZW50OiAnZmxleC1lbmQnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9XCJNeSBkZXZpY2VzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja0RldmljZXNJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1jb250cm9scz17b3Blbk1vcmVBY3Rpb25zID8gJ2RldmljZS1tZW51JyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9e29wZW5Nb3JlQWN0aW9ucyA/ICd0cnVlJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcyNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcyNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyNmZmYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwwLDAsMC41NSknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzZweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnU0VUVElOR1MnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvcHMuaXNDdXJyZW50VXNlciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3ttYXJnaW5MZWZ0OiAnNHB4J319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7aGFuZFJhaXNlZCAmJiA8UGFuVG9vbCBmb250U2l6ZT17J3NtYWxsJ30gc3R5bGU9e3tjb2xvcjogJyNlMmIwMzAnfX0vPn1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuaXNDdXJyZW50VXNlciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPXsnbWVldGluZy1hdWRpby1lbC1jb250YWluZXInfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICAgICAgYW5jaG9yRWw9e2FuY2hvckVsfVxuICAgICAgICAgICAgICAgIGlkPVwiZGV2aWNlcy1tZW51XCJcbiAgICAgICAgICAgICAgICBvcGVuPXtvcGVuTW9yZUFjdGlvbnN9XG4gICAgICAgICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VEZXZpY2VNZW51fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsb3NlRGV2aWNlTWVudX1cbiAgICAgICAgICAgICAgICBQYXBlclByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGVsZXZhdGlvbjogMCxcbiAgICAgICAgICAgICAgICAgICAgc3g6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAndmlzaWJsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6ICdkcm9wLXNoYWRvdygwcHggMnB4IDhweCByZ2JhKDAsMCwwLDAuMzIpKScsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdDogMS41LFxuICAgICAgICAgICAgICAgICAgICAgICAgJyYgLk11aUxpc3Qtcm9vdCc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQgI2UxZTFlMScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICcmIC5NdWlBdmF0YXItcm9vdCc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMzIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtbDogLTAuNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtcjogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAnJjpiZWZvcmUnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAxNCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZ2NvbG9yOiAncHJpbWFyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoNDVkZWcpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luPXt7XG4gICAgICAgICAgICAgICAgICAgIGhvcml6b250YWw6IDIwLFxuICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbDogMTM2XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBhbmNob3JPcmlnaW49e3tcbiAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbDogJ3JpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgdmVydGljYWw6ICd0b3AnXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGF1ZGlvRGV2aWNlcy5tYXAoKGRldmljZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TWVudUl0ZW0gb25DbGljaz17KCkgPT4gY2hhbmdlQXVkaW9EZXZpY2UoZGV2aWNlKX0ga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tjb2xvcjogc2VsZWN0ZWRBdWRpb0RldmljZSAmJiBzZWxlY3RlZEF1ZGlvRGV2aWNlLmlkID09PSBkZXZpY2UuaWQgPyAnIzE5ODc1NCcgOiBudWxsfX0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLmxhYmVsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvTWVudUl0ZW0+O1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgPC8+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFZDUm9vbVBhcnRpY2lwYW50O1xuIl0sIm1h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
|
|
862
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1ZDRXZlbnRUeXBlIiwiX1ZDRXZlbnRNYW5hZ2VyIiwiX1ZDUm9vbVJlY29yZGVyIiwiX01lZGlhU291cEhlbHBlciIsIl9UcmFja3MiLCJfSWNvbkJ1dHRvbiIsIl9JY29uIiwiX2ljb25zTWF0ZXJpYWwiLCJfVG9vbHRpcCIsIl9tYXRlcmlhbCIsIl9Tb2NrZXRNYW5hZ2VyIiwiX0J1dHRvbiIsIl9BcHBsaWNhdGlvbk1hbmFnZXIiLCJfYXVkaW9MZXZlbE1ldGVyIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiU1BFQUtJTkdfTEVWRUwiLCJWSURFT19DT0RFQ19PUFRJT05TIiwiZXhwb3J0cyIsInZpZGVvR29vZ2xlU3RhcnRCaXRyYXRlIiwiVklERU9fQ09OU1RSQUlOVFMiLCJhdWRpbyIsInZpZGVvIiwid2lkdGgiLCJtaW4iLCJpZGVhbCIsImhlaWdodCIsIlZJREVPX0VOQ09ESU5HUyIsInJpZCIsIm1heEJpdHJhdGUiLCJzY2FsYWJpbGl0eU1vZGUiLCJsb2NhdGlvbiIsIndpbmRvdyIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJWQ1Jvb21QYXJ0aWNpcGFudCIsInByb3BzIiwiaGFuZFJhaXNlZCIsInNldEhhbmRSYWlzZWQiLCJSZWFjdCIsInVzZVN0YXRlIiwidmlkZW9NdXRlZCIsInNldFZpZGVvTXV0ZWQiLCJhdWRpb011dGVkIiwic2V0QXVkaW9NdXRlZCIsInByb2R1Y2VyVHJhbnNwb3J0Iiwic2V0UHJvZHVjZXJUcmFuc3BvcnQiLCJ2aWRlb1JlZnJlc2hlciIsInNldFZpZGVvUmVmcmVzaGVyIiwicHJvZHVjZXJzIiwiTWFwIiwiZmFpbGVkUHJvZHVjZXJzRHVlVG9OdWxsVHJhbnNwb3J0IiwiYXVkaW9EZXZpY2VzIiwic2V0QXVkaW9EZXZpY2VzIiwic2VsZWN0ZWRBdWRpb0RldmljZSIsInNldFNlbGVjdGVkQXVkaW9EZXZpY2UiLCJjb25zdW1lcnMiLCJzb3VuZExldmVsIiwic2V0U291bmRMZXZlbCIsImV2ZW50SGFuZGxlciIsInZpZGVvUmVmIiwidXNlUmVmIiwidmlkZW9TdHJlYW0iLCJhdWRpb1JlZiIsInRyYWNrcyIsIlRyYWNrcyIsInNvdW5kTGV2ZWxDb3VudGVyIiwibWV0ZXJzIiwidW5tb3VudGVkUmVmIiwic2hvd1ZpZGVvIiwiZGV2aWNlIiwicGFydGljaXBhbnRzIiwibnVtYmVyT2ZJblZpZXdQYXJ0aWNpcGFudHMiLCJhbmNob3JFbCIsInNldEFuY2hvckVsIiwib3Blbk1vcmVBY3Rpb25zIiwiQm9vbGVhbiIsImRvd25sb2FkVXJsIiwic2V0RG93bmxvYWRVcmwiLCJoYW5kbGVyIiwiaWQiLCJkYXRhIiwidXNlcklkIiwib24iLCJldmVudFR5cGUiLCJiZSIsIlZDRXZlbnRUeXBlIiwiQVVESU9fVklTVUFMX1NFVFRJTkdTX0NIQU5HRUQiLCJvbkFWU2V0dGluZ3NDaGFuZ2UiLCJwYXlsb2FkIiwiUkFJU0VfSEFORCIsIm9uUmFpc2VIYW5kIiwiTE9XRVJfSEFORCIsIm9uTG93ZXJIYW5kIiwiTkVXX1BST0RVQ0VSUyIsIm9uTmV3UHJvZHVjZXJzIiwiQ09OU1VNRVJfQ0xPU0VEIiwiY29uc3VtZXJJZCIsInJlbW92ZUNvbnN1bWVyIiwia2luZCIsIkFVRElPX0xFVkVMIiwibGV2ZWwiLCJoYW5kbGVDbGlja0RldmljZXNJY29uIiwiZXZlbnQiLCJjdXJyZW50VGFyZ2V0IiwiY2hhbmdlQXVkaW9EZXZpY2UiLCJ1c2VFZmZlY3QiLCJhcGkiLCJjdXJyZW50Iiwic3JjT2JqZWN0Iiwic291bmRNb25pdG9yIiwiaW5WaWV3IiwiaGFuZGxlQ2xvc2VEZXZpY2VNZW51IiwiaXNDdXJyZW50VXNlciIsInN0b3BQcm9kdWNpbmciLCJwcm9kdWNlIiwiVXRpbHMiLCJpc051bGwiLCJhdmF0YXJJZCIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldENvbnRleHRSb290Iiwic2Vzc2lvblN0b3JhZ2UiLCJnZXRJdGVtIiwib25BdWRpb0RldmljZUNoYW5nZSIsImNyZWF0ZVByb2R1Y2VyVHJhbnNwb3J0IiwiY29uc29sZSIsImxvZyIsInNwbGljZSIsImxlbmd0aCIsIm1lZGlhU291cEhlbHBlciIsImluaXRQcm9kdWNlclRyYW5zcG9ydCIsIm1lZXRpbmdJZCIsImdldFVzZXJEZXRhaWxzIiwidXNlcm5hbWUiLCJoYW5kbGVEZXZpY2VzQ2hhbmdlZCIsImRldmljZXMiLCJhdWRpb0RldmljZUxpc3QiLCJmb3JFYWNoIiwicHVzaCIsImRldmljZUlkIiwibGFiZWwiLCJ2Y0V2ZW50TWFuYWdlciIsInJlbW92ZVN1YnNjcmlwdGlvbnMiLCJhZGRTdWJzY3JpcHRpb25zIiwibmF2aWdhdG9yIiwibWVkaWFEZXZpY2VzIiwib25kZXZpY2VjaGFuZ2UiLCJlbnVtZXJhdGVEZXZpY2VzIiwidGhlbiIsImNvbnN1bWVGYWlsZWRQcm9kdWNlcnMiLCJrZXkiLCJ2YWx1ZSIsInN0b3AiLCJjbGVhciIsInN0YXJ0TWV0ZXIiLCJzdHJlYW0iLCJzdG9wTWV0ZXIiLCJzdGFydEF1ZGlvTGV2ZWxNZXRlciIsImZpcmVFdmVudCIsImRlbGV0ZSIsInR5cGUiLCJlcnJvciIsImNhblByb2R1Y2UiLCJtZWRpYUNvbnN0cmFpbnRzIiwiZ2V0VXNlck1lZGlhIiwidHJhY2siLCJnZXRBdWRpb1RyYWNrcyIsImdldFZpZGVvVHJhY2tzIiwicGFyYW1zIiwiaXNIb3N0IiwibWVkaWFSZWNvcmRlciIsImFkZFRyYWNrIiwic2V0QXVkaW9UcmFjayIsImVuY29kaW5ncyIsImNvZGVjT3B0aW9ucyIsInNldFZpZGVvVHJhY2siLCJwcm9kdWNlciIsImlzUnRwQ29sbGlzaW9uRXJyb3IiLCJTWVNURU1fQUxFUlQiLCJtZXNzYWdlIiwiUkVKT0lOX0FMRVJUX01FU1NBR0UiLCJnZXRTdGF0cyIsImdldFRyYWNrcyIsInNldFRpbWVvdXQiLCJjYWxsYmFjayIsInByb2R1Y2VySWQiLCJjbG9zZSIsInN0b3BWaWRlb1RyYWNrIiwic3RvcEF1ZGlvVHJhY2siLCJzb2NrZXRNYW5hZ2VyIiwiZW1pdEV2ZW50IiwiUFJPRFVDRVJfQ0xPU0VEIiwicm9vbUlkIiwiY2F0Y2giLCJsb2FkaW5nIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiSlNPTiIsInN0cmluZ2lmeSIsInNjcmVlblNoYXJpbmciLCJjb25zdW1lIiwiYXVkaW9FbGVtZW50IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsInJlbW92ZVRyYWNrIiwiZWxlbWVudEJ5SWQiLCJyZW1vdmVDaGlsZCIsInJldHJ5Q29uc3VtZSIsInJldHJpZXMiLCJ0cmFuc3BvcnQiLCJnZXRSZWN2VHJhbnNwb3J0IiwiRXJyb3IiLCJnZXRDb25zdW1lU3RyZWFtIiwicnRwQ2FwYWJpbGl0aWVzIiwiX3JlZiIsImNvbnN1bWVyIiwiY3JlYXRlRWxlbWVudCIsInBsYXlzaW5saW5lIiwiYXV0b3BsYXkiLCJhcHBlbmRDaGlsZCIsInRyYWNrRW5kZWRQYXJ0aWNpcGFudCIsImZpbmQiLCJwIiwiZ2V0UGFydGljaXBhbnROYW1lIiwibmFtZSIsImNvbmNhdCIsIkZyYWdtZW50IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJwYWRkaW5nIiwicG9zaXRpb24iLCJib3JkZXJSYWRpdXMiLCJvdmVyZmxvdyIsImJveFNpemluZyIsImJhY2tncm91bmRDb2xvciIsImJvcmRlciIsImdldEFwcGxpY2F0aW9uUHJpbWFyeUNvbG9yIiwiYm94U2hhZG93IiwidHJhbnNpdGlvbiIsIm1hcmdpbkJvdHRvbSIsInNpemluZyIsImNvbG9yIiwiZm9udFNpemUiLCJiYWNrZ3JvdW5kUmVwZWF0IiwiYmFja2dyb3VuZFNpemUiLCJiYWNrZ3JvdW5kUG9zaXRpb24iLCJiYWNrZ3JvdW5kSW1hZ2UiLCJnZXRJbml0aWFscyIsImF1dG9QbGF5IiwicmVmIiwibXV0ZWQiLCJvYmplY3RGaXQiLCJ0cmFuc2Zvcm0iLCJ6SW5kZXgiLCJkaXNwbGF5IiwibGVmdCIsImJvdHRvbSIsImFsaWduSXRlbXMiLCJnYXAiLCJtYXhXaWR0aCIsImZvbnRXZWlnaHQiLCJsaW5lSGVpZ2h0Iiwid2hpdGVTcGFjZSIsInRleHRPdmVyZmxvdyIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsImp1c3RpZnlDb250ZW50Iiwib25DbGljayIsIm9uSG9zdEF1ZGlvTXV0ZSIsIm9uSG9zdFZpZGVvTXV0ZSIsInRpdGxlIiwiUGFuVG9vbCIsIk1lbnUiLCJvcGVuIiwib25DbG9zZSIsIlBhcGVyUHJvcHMiLCJlbGV2YXRpb24iLCJzeCIsImZpbHRlciIsIm10IiwibWwiLCJtciIsImNvbnRlbnQiLCJ0b3AiLCJyaWdodCIsImJnY29sb3IiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJob3Jpem9udGFsIiwidmVydGljYWwiLCJhbmNob3JPcmlnaW4iLCJtYXAiLCJpbmRleCIsIk1lbnVJdGVtIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbWVkaWEvVkNSb29tUGFydGljaXBhbnQuanN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAqL1xuaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgJy4vVkNSb29tUGFydGljaXBhbnQuY3NzJztcbmltcG9ydCBVdGlscyBmcm9tICcuLi8uLi9VdGlscyc7XG5pbXBvcnQge1ZDRXZlbnRUeXBlfSBmcm9tICcuL1ZDRXZlbnRUeXBlJztcbmltcG9ydCB2Y0V2ZW50TWFuYWdlciBmcm9tICcuL1ZDRXZlbnRNYW5hZ2VyJztcbmltcG9ydCBtZWRpYVJlY29yZGVyIGZyb20gJy4vVkNSb29tUmVjb3JkZXInO1xuaW1wb3J0IG1lZGlhU291cEhlbHBlciwge2lzUnRwQ29sbGlzaW9uRXJyb3IsIFJFSk9JTl9BTEVSVF9NRVNTQUdFfSBmcm9tICcuL01lZGlhU291cEhlbHBlcic7XG5pbXBvcnQgVHJhY2tzIGZyb20gJy4vVHJhY2tzJztcbmltcG9ydCBJY29uQnV0dG9uIGZyb20gJ0BtdWkvbWF0ZXJpYWwvSWNvbkJ1dHRvbic7XG5pbXBvcnQgSWNvbiBmcm9tICcuLi9JY29uJztcbmltcG9ydCB7UGFuVG9vbH0gZnJvbSAnQG11aS9pY29ucy1tYXRlcmlhbCc7XG5pbXBvcnQgVG9vbHRpcCBmcm9tICdAbXVpL21hdGVyaWFsL1Rvb2x0aXAnO1xuaW1wb3J0IHtNZW51LCBNZW51SXRlbX0gZnJvbSAnQG11aS9tYXRlcmlhbCc7XG5pbXBvcnQgc29ja2V0TWFuYWdlciBmcm9tICcuLi9Tb2NrZXRNYW5hZ2VyJztcbmltcG9ydCBCdXR0b24gZnJvbSAnQG11aS9tYXRlcmlhbC9CdXR0b24nO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tICcuLi8uLi9BcHBsaWNhdGlvbk1hbmFnZXInO1xuaW1wb3J0IHtzdGFydEF1ZGlvTGV2ZWxNZXRlcn0gZnJvbSAnLi9hdWRpb0xldmVsTWV0ZXInO1xuXG5jb25zdCBTUEVBS0lOR19MRVZFTCA9IDY7XG5cbmV4cG9ydCBjb25zdCBWSURFT19DT0RFQ19PUFRJT05TID0ge1xuICAgIHZpZGVvR29vZ2xlU3RhcnRCaXRyYXRlOiAxMDAwXG59O1xuXG5leHBvcnQgY29uc3QgVklERU9fQ09OU1RSQUlOVFMgPSB7XG4gICAgYXVkaW86IGZhbHNlLFxuICAgIHZpZGVvOiB7XG4gICAgICAgIHdpZHRoOiB7XG4gICAgICAgICAgICBtaW46IDY0MCxcbiAgICAgICAgICAgIGlkZWFsOiAxOTIwXG4gICAgICAgIH0sXG4gICAgICAgIGhlaWdodDoge1xuICAgICAgICAgICAgbWluOiA0MDAsXG4gICAgICAgICAgICBpZGVhbDogMTA4MFxuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFZJREVPX0VOQ09ESU5HUyA9IFtcbiAgICB7XG4gICAgICAgIHJpZDogJ3IwJyxcbiAgICAgICAgbWF4Qml0cmF0ZTogMjAwMDAsXG4gICAgICAgIC8vc2NhbGVSZXNvbHV0aW9uRG93bkJ5OiAxMC4wLFxuICAgICAgICBzY2FsYWJpbGl0eU1vZGU6ICdTMVQzJ1xuICAgIH0sXG4gICAge1xuICAgICAgICByaWQ6ICdyMScsXG4gICAgICAgIG1heEJpdHJhdGU6IDE1MDAwMCxcbiAgICAgICAgc2NhbGFiaWxpdHlNb2RlOiAnUzFUMydcbiAgICB9LFxuICAgIHtcbiAgICAgICAgcmlkOiAncjInLFxuICAgICAgICBtYXhCaXRyYXRlOiA0NTAwMDAsXG4gICAgICAgIHNjYWxhYmlsaXR5TW9kZTogJ1MxVDMnXG4gICAgfVxuXTtcblxuY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xuY29uc3QgVkNSb29tUGFydGljaXBhbnQgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCBbaGFuZFJhaXNlZCwgc2V0SGFuZFJhaXNlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3ZpZGVvTXV0ZWQsIHNldFZpZGVvTXV0ZWRdID0gUmVhY3QudXNlU3RhdGUocHJvcHMudmlkZW9NdXRlZCk7XG4gICAgY29uc3QgW2F1ZGlvTXV0ZWQsIHNldEF1ZGlvTXV0ZWRdID0gUmVhY3QudXNlU3RhdGUocHJvcHMuYXVkaW9NdXRlZCk7XG4gICAgY29uc3QgW3Byb2R1Y2VyVHJhbnNwb3J0LCBzZXRQcm9kdWNlclRyYW5zcG9ydF0gPSBSZWFjdC51c2VTdGF0ZShwcm9wcy5wcm9kdWNlclRyYW5zcG9ydCk7XG4gICAgY29uc3QgW3ZpZGVvUmVmcmVzaGVyLCBzZXRWaWRlb1JlZnJlc2hlcl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3Byb2R1Y2Vyc10gPSBSZWFjdC51c2VTdGF0ZShuZXcgTWFwKCkpO1xuICAgIGNvbnN0IFtmYWlsZWRQcm9kdWNlcnNEdWVUb051bGxUcmFuc3BvcnRdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFthdWRpb0RldmljZXMsIHNldEF1ZGlvRGV2aWNlc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW3NlbGVjdGVkQXVkaW9EZXZpY2UsIHNldFNlbGVjdGVkQXVkaW9EZXZpY2VdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2NvbnN1bWVyc10gPSBSZWFjdC51c2VTdGF0ZShuZXcgTWFwKCkpO1xuICAgIGNvbnN0IFtzb3VuZExldmVsLCBzZXRTb3VuZExldmVsXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtldmVudEhhbmRsZXJdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IHZpZGVvUmVmID0gdXNlUmVmKCk7XG4gICAgY29uc3QgdmlkZW9TdHJlYW0gPSB1c2VSZWYoKTtcbiAgICBjb25zdCBhdWRpb1JlZiA9IHVzZVJlZigpO1xuICAgIGNvbnN0IHRyYWNrcyA9IHVzZVJlZihuZXcgVHJhY2tzKCkpO1xuICAgIGNvbnN0IHNvdW5kTGV2ZWxDb3VudGVyID0gdXNlUmVmKDApO1xuICAgIC8vIEFjdGl2ZS1zcGVha2VyIG1ldGVyczogdGhpcyAoc2VsZikgdGlsZSBpcyB0aGUgYXVkaW8gaHViIOKAlCBpdCBjb25zdW1lc1xuICAgIC8vIGV2ZXJ5IHBhcnRpY2lwYW50J3MgYXVkaW8gKyBwcm9kdWNlcyB0aGUgbG9jYWwgbWljIOKAlCBzbyBpdCBydW5zIHRoZSBsZXZlbFxuICAgIC8vIG1ldGVycyBhbmQgYnJvYWRjYXN0cyB7dXNlcklkLCBsZXZlbH0gZm9yIGVhY2ggdGlsZSB0byBoaWdobGlnaHQgaXRzZWxmLlxuICAgIGNvbnN0IG1ldGVycyA9IHVzZVJlZihuZXcgTWFwKCkpO1xuICAgIC8vIFNldCBvbiB1bm1vdW50IHNvIHRoZSByZWN1cnNpdmUgY29uc3VtZS9yZXRyeSBzZXRUaW1lb3V0IGxvb3BzIHN0b3BcbiAgICAvLyByZS1zY2hlZHVsaW5nIChvdGhlcndpc2UgdGhleSBwb2xsL3JldHJ5IGZvcmV2ZXIgYWZ0ZXIgdGhlIHRpbGUgaXMgZ29uZSkuXG4gICAgY29uc3QgdW5tb3VudGVkUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBzaG93VmlkZW8gPSB0cnVlO1xuICAgIGNvbnN0IHtcbiAgICAgICAgZGV2aWNlLFxuICAgICAgICBwYXJ0aWNpcGFudHNcbiAgICB9ID0gcHJvcHM7XG4gICAgY29uc3Qge251bWJlck9mSW5WaWV3UGFydGljaXBhbnRzfSA9IHByb3BzO1xuICAgIGNvbnN0IFthbmNob3JFbCwgc2V0QW5jaG9yRWxdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qgb3Blbk1vcmVBY3Rpb25zID0gQm9vbGVhbihhbmNob3JFbCk7XG5cbiAgICBjb25zdCBbZG93bmxvYWRVcmwsIHNldERvd25sb2FkVXJsXSA9IHVzZVN0YXRlKG51bGwpO1xuXG4gICAgY29uc3QgaGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ21lZXRpbmctcGFydGljaXBhbnQtJyArIHByb3BzLmRhdGEudXNlcklkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uOiAoZXZlbnRUeXBlLCBiZSkgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuQVVESU9fVklTVUFMX1NFVFRJTkdTX0NIQU5HRUQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkFWU2V0dGluZ3NDaGFuZ2UoYmUucGF5bG9hZCA/IGJlLnBheWxvYWQgOiBiZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5SQUlTRV9IQU5EOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25SYWlzZUhhbmQoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5MT1dFUl9IQU5EOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25Mb3dlckhhbmQoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5ORVdfUFJPRFVDRVJTOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25OZXdQcm9kdWNlcnMoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5DT05TVU1FUl9DTE9TRUQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3VtZXJzLmhhcyhiZS5wYXlsb2FkLmNvbnN1bWVySWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ29uc3VtZXIoYmUucGF5bG9hZC5jb25zdW1lcklkLCBiZS5wYXlsb2FkLmtpbmQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuQVVESU9fTEVWRUw6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmUucGF5bG9hZCAmJiBiZS5wYXlsb2FkLnVzZXJJZCA9PT0gcHJvcHMuZGF0YS51c2VySWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTb3VuZExldmVsKGJlLnBheWxvYWQubGV2ZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVDbGlja0RldmljZXNJY29uID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIHNldEFuY2hvckVsKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgIH07XG5cbiAgICBjb25zdCBjaGFuZ2VBdWRpb0RldmljZSA9IChkZXZpY2UpID0+IHtcbiAgICAgICAgc2V0U2VsZWN0ZWRBdWRpb0RldmljZShkZXZpY2UpO1xuICAgIH07XG5cbiAgICBjb25zdCBvblJhaXNlSGFuZCA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChwYXlsb2FkICYmIHBheWxvYWQudXNlcklkID09PSBwcm9wcy5kYXRhLnVzZXJJZCkge1xuICAgICAgICAgICAgc2V0SGFuZFJhaXNlZCh0cnVlKTtcbiAgICAgICAgICAgIHByb3BzLmRhdGEuaGFuZFJhaXNlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25Mb3dlckhhbmQgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAocGF5bG9hZCAmJiBwYXlsb2FkLnVzZXJJZCA9PT0gcHJvcHMuZGF0YS51c2VySWQpIHtcbiAgICAgICAgICAgIHNldEhhbmRSYWlzZWQoZmFsc2UpO1xuICAgICAgICAgICAgcHJvcHMuZGF0YS5oYW5kUmFpc2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgZXZlbnRIYW5kbGVyLmFwaSA9IGhhbmRsZXIoKTtcbiAgICB9KTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICh2aWRlb1JlZi5jdXJyZW50ICYmIHZpZGVvU3RyZWFtLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHZpZGVvUmVmLmN1cnJlbnQuc3JjT2JqZWN0ID0gdmlkZW9TdHJlYW0uY3VycmVudDtcbiAgICAgICAgfVxuICAgIH0sIFt2aWRlb1JlZi5jdXJyZW50XSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMuc291bmRNb25pdG9yICYmICFwcm9wcy5pblZpZXcpIHtcbiAgICAgICAgICAgIGlmIChzb3VuZExldmVsID4gMykge1xuICAgICAgICAgICAgICAgIHNvdW5kTGV2ZWxDb3VudGVyLmN1cnJlbnQgPSAxMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc291bmRMZXZlbENvdW50ZXIuY3VycmVudCA+IDApIHtcbiAgICAgICAgICAgICAgICBzb3VuZExldmVsQ291bnRlci5jdXJyZW50LS07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByb3BzLnNvdW5kTW9uaXRvcihwcm9wcy5kYXRhLnVzZXJJZCwgc291bmRMZXZlbENvdW50ZXIuY3VycmVudCA9PT0gMCB8fCBhdWRpb011dGVkKTtcbiAgICAgICAgfVxuICAgIH0sIFtzb3VuZExldmVsXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoYXVkaW9NdXRlZCkge1xuICAgICAgICAgICAgc2V0U291bmRMZXZlbCgwKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy5zb3VuZE1vbml0b3IgJiYgIXByb3BzLmluVmlldykge1xuICAgICAgICAgICAgICAgIHByb3BzLnNvdW5kTW9uaXRvcihwcm9wcy5kYXRhLnVzZXJJZCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbYXVkaW9NdXRlZF0pO1xuXG4gICAgY29uc3QgaGFuZGxlQ2xvc2VEZXZpY2VNZW51ID0gKCkgPT4ge1xuICAgICAgICBzZXRBbmNob3JFbChudWxsKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25BVlNldHRpbmdzQ2hhbmdlID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKHByb3BzLmRhdGEudXNlcklkID09PSBwYXlsb2FkLnVzZXJJZCkge1xuICAgICAgICAgICAgaWYgKHByb3BzLmlzQ3VycmVudFVzZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgaWNvbiBtdXN0IHJlZmxlY3QgdGhlIEFDVFVBTCBwcm9kdWNlciwgbm90IHRoZSByZXF1ZXN0ZWQgc3RhdGU6XG4gICAgICAgICAgICAgICAgLy8gLSBtdXRlOiBmbGlwIHRoZSBpY29uIG9ubHkgb25jZSBzdG9wUHJvZHVjaW5nIGNvbmZpcm1zIHRoZSBwcm9kdWNlciBpc1xuICAgICAgICAgICAgICAgIC8vICAgY2xvc2VkIGFuZCB0aGUgdHJhY2sgc3RvcHBlZCAoaXRzIHN1Y2Nlc3MgY2FsbGJhY2spIOKAlCBzbyB3ZSBuZXZlciBzaG93XG4gICAgICAgICAgICAgICAgLy8gICBcIm11dGVkXCIgd2hpbGUgYXVkaW8gaXMgc3RpbGwgZ29pbmcgb3V0LlxuICAgICAgICAgICAgICAgIC8vIC0gdW5tdXRlOiBwcm9kdWNlKCkgZmxpcHMgdGhlIGljb24gb2ZmIG9ubHkgYWZ0ZXIgdGhlIHByb2R1Y2VyIGlzIGNyZWF0ZWQuXG4gICAgICAgICAgICAgICAgaWYgKHBheWxvYWQuYXVkaW9NdXRlZCkge1xuICAgICAgICAgICAgICAgICAgICBzdG9wUHJvZHVjaW5nKCdhdWRpbycsICgpID0+IHNldEF1ZGlvTXV0ZWQodHJ1ZSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGV2aWNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y2UoJ2F1ZGlvJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHBheWxvYWQudmlkZW9NdXRlZCkge1xuICAgICAgICAgICAgICAgICAgICBzdG9wUHJvZHVjaW5nKCd2aWRlbycsICgpID0+IHNldFZpZGVvTXV0ZWQodHJ1ZSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGV2aWNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y2UoJ3ZpZGVvJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRBdWRpb011dGVkKHBheWxvYWQuYXVkaW9NdXRlZCk7XG4gICAgICAgICAgICAgICAgc2V0VmlkZW9NdXRlZChwYXlsb2FkLnZpZGVvTXV0ZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChwcm9wcy5kYXRhICYmICFVdGlscy5pc051bGwocHJvcHMuZGF0YS5hdmF0YXJJZClcbiAgICAgICAgICAgICYmIHByb3BzLmRhdGEuYXZhdGFySWQgIT09ICd1bmRlZmluZWQnICYmIHByb3BzLmRhdGEuYXZhdGFySWQgIT09ICdudWxsJykge1xuICAgICAgICAgICAgc2V0RG93bmxvYWRVcmwobG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKSArICcvZG9jcy9hcGkvdjEvbWFuYWdlci9kb3dubG9hZC8nICsgcHJvcHMuZGF0YS5hdmF0YXJJZCArXG4gICAgICAgICAgICAgICAgJz9hY2Nlc3NfdG9rZW49JyArIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2FjY2Vzc1Rva2VuJykgKyAnJmlkVG9rZW49JyArIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lkVG9rZW4nKSk7XG4gICAgICAgIH1cbiAgICB9LCBbcHJvcHMuZGF0YV0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgLy8gUmVtb3RlIHRpbGVzIHJlZmxlY3QgdGhlIHBlZXIncyByZXBvcnRlZCBzdGF0ZS4gVGhlIENVUlJFTlQgdXNlcidzIGljb24gaXMgTk9UXG4gICAgICAgIC8vIHN5bmNlZCBmcm9tIHByb3BzIOKAlCBpdCBpcyBkcml2ZW4gb25seSBieSB0aGUgYWN0dWFsIHByb2R1Y2VyIChtdXRlIHNob3dzIG9uY2UgdGhlXG4gICAgICAgIC8vIHByb2R1Y2VyIGlzIGNvbmZpcm1lZCBzdG9wcGVkOyB1bm11dGUgb25jZSBwcm9kdWNlKCkgc3VjY2VlZHMpLCBzbyB0aGUgaWNvbiBjYW5cbiAgICAgICAgLy8gbmV2ZXIgY2xhaW0gXCJtdXRlZFwiIHdoaWxlIGF1ZGlvIGlzIHN0aWxsIGJlaW5nIHByb2R1Y2VkLlxuICAgICAgICBpZiAoIXByb3BzLmlzQ3VycmVudFVzZXIpIHtcbiAgICAgICAgICAgIHNldEF1ZGlvTXV0ZWQocHJvcHMuYXVkaW9NdXRlZCk7XG4gICAgICAgIH1cbiAgICB9LCBbcHJvcHMuYXVkaW9NdXRlZF0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFwcm9wcy5pc0N1cnJlbnRVc2VyKSB7XG4gICAgICAgICAgICBzZXRWaWRlb011dGVkKHByb3BzLnZpZGVvTXV0ZWQpO1xuICAgICAgICB9XG4gICAgfSwgW3Byb3BzLnZpZGVvTXV0ZWRdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChwcm9kdWNlclRyYW5zcG9ydCkge1xuICAgICAgICAgICAgLy8gQSAocmUpYXNzaWduZWQgdHJhbnNwb3J0IG1lYW5zIGV4aXN0aW5nIHByb2R1Y2VycyBsaXZlZCBvbiB0aGUgb2xkXG4gICAgICAgICAgICAvLyAobm93LWNsb3NlZCkgdHJhbnNwb3J0LiBUZWFyIHRoZW0gZG93biBwcm9wZXJseSDigJQgY2xvc2UgKyBzdG9wIHRoZVxuICAgICAgICAgICAgLy8gbG9jYWwgdHJhY2tzICsgbm90aWZ5IHRoZSBzZXJ2ZXIg4oCUIHNvIHByb2R1Y2UoKSByZWNyZWF0ZXMgdGhlbSBvbiB0aGVcbiAgICAgICAgICAgIC8vIG5ldyB0cmFuc3BvcnQgaW5zdGVhZCBvZiBlYXJseS1yZXR1cm5pbmcuIE5vLW9wIG9uIGZpcnN0IG1vdW50LlxuICAgICAgICAgICAgc3RvcFByb2R1Y2luZygndmlkZW8nKTtcbiAgICAgICAgICAgIHN0b3BQcm9kdWNpbmcoJ2F1ZGlvJyk7XG5cbiAgICAgICAgICAgIGlmICghcHJvcHMudmlkZW9NdXRlZCkge1xuICAgICAgICAgICAgICAgIHByb2R1Y2UoJ3ZpZGVvJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXByb3BzLmF1ZGlvTXV0ZWQpIHtcbiAgICAgICAgICAgICAgICBwcm9kdWNlKCdhdWRpbycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW3Byb2R1Y2VyVHJhbnNwb3J0XSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzZXRQcm9kdWNlclRyYW5zcG9ydChwcm9wcy5wcm9kdWNlclRyYW5zcG9ydCk7XG4gICAgfSwgW3Byb3BzLnByb2R1Y2VyVHJhbnNwb3J0XSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMuaXNDdXJyZW50VXNlcikge1xuICAgICAgICAgICAgcHJvcHMub25BdWRpb0RldmljZUNoYW5nZShzZWxlY3RlZEF1ZGlvRGV2aWNlKTtcbiAgICAgICAgICAgIHN0b3BQcm9kdWNpbmcoJ2F1ZGlvJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEF1ZGlvRGV2aWNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcHJvZHVjZXJUcmFuc3BvcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVByb2R1Y2VyVHJhbnNwb3J0KCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWF1ZGlvTXV0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2UoJ2F1ZGlvJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIFtzZWxlY3RlZEF1ZGlvRGV2aWNlXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAvLyBPbmNlIHRoZSBEZXZpY2UgaXMgcmVhZHksIGNvbnN1bWUgdGhlIHByb2R1Y2VycyB3ZSBhbHJlYWR5IGtub3cgYWJvdXRcbiAgICAgICAgLy8gYW5kIHJlcGxheSBhbnkgdGhhdCBhcnJpdmVkIGJlZm9yZSB3ZSB3ZXJlIHJlYWR5LiBSZWN2IHRyYW5zcG9ydHNcbiAgICAgICAgLy8gdGhlbXNlbHZlcyBhcmUgY3JlYXRlZCBqdXN0LWluLXRpbWUgaW5zaWRlIGNvbnN1bWUoKSAocGVyIGtpbmQpLCBzbyB0aGVcbiAgICAgICAgLy8gdHJpZ2dlciBoZXJlIGlzIHRoZSBEZXZpY2UsIG5vdCBhIHRyYW5zcG9ydC5cbiAgICAgICAgaWYgKGRldmljZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0RFVklDRSBSRUFEWSBXSVRIIFBST0RVQ0VSUyA6ICcsIHByb3BzLmRhdGEucHJvZHVjZXJzKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy5kYXRhLnByb2R1Y2Vycykge1xuICAgICAgICAgICAgICAgIG9uTmV3UHJvZHVjZXJzKHByb3BzLmRhdGEucHJvZHVjZXJzLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb25OZXdQcm9kdWNlcnMoZmFpbGVkUHJvZHVjZXJzRHVlVG9OdWxsVHJhbnNwb3J0LCB0cnVlKTtcbiAgICAgICAgICAgIGZhaWxlZFByb2R1Y2Vyc0R1ZVRvTnVsbFRyYW5zcG9ydC5zcGxpY2UoMCwgZmFpbGVkUHJvZHVjZXJzRHVlVG9OdWxsVHJhbnNwb3J0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICB9LCBbZGV2aWNlXSk7XG5cbiAgICBjb25zdCBjcmVhdGVQcm9kdWNlclRyYW5zcG9ydCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgc2V0UHJvZHVjZXJUcmFuc3BvcnQoYXdhaXQgbWVkaWFTb3VwSGVscGVyLmluaXRQcm9kdWNlclRyYW5zcG9ydChwcm9wcy5kZXZpY2UsIHByb3BzLm1lZXRpbmdJZCxcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lKSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZURldmljZXNDaGFuZ2VkID0gKGRldmljZXMpID0+IHtcbiAgICAgICAgbGV0IGF1ZGlvRGV2aWNlTGlzdCA9IFtdO1xuICAgICAgICBkZXZpY2VzLmZvckVhY2goKGRldmljZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCdhdWRpb2lucHV0JyA9PT0gZGV2aWNlLmtpbmQpIHtcbiAgICAgICAgICAgICAgICBhdWRpb0RldmljZUxpc3QucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBkZXZpY2UuZGV2aWNlSWQsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBkZXZpY2UubGFiZWxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgc2V0QXVkaW9EZXZpY2VzKGF1ZGlvRGV2aWNlTGlzdCk7XG5cbiAgICAgICAgaWYgKGF1ZGlvRGV2aWNlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZEF1ZGlvRGV2aWNlKGF1ZGlvRGV2aWNlTGlzdFswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZEF1ZGlvRGV2aWNlKG51bGwpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZjRXZlbnRNYW5hZ2VyLnJlbW92ZVN1YnNjcmlwdGlvbnMoZXZlbnRIYW5kbGVyKTtcbiAgICAgICAgdmNFdmVudE1hbmFnZXIuYWRkU3Vic2NyaXB0aW9ucyhldmVudEhhbmRsZXIsIFZDRXZlbnRUeXBlLkFVRElPX1ZJU1VBTF9TRVRUSU5HU19DSEFOR0VELFxuICAgICAgICAgICAgVkNFdmVudFR5cGUuUkFJU0VfSEFORCwgVkNFdmVudFR5cGUuTE9XRVJfSEFORCwgVkNFdmVudFR5cGUuTkVXX1BST0RVQ0VSUywgVkNFdmVudFR5cGUuQ09OU1VNRVJfQ0xPU0VELFxuICAgICAgICAgICAgVkNFdmVudFR5cGUuQVVESU9fTEVWRUwpO1xuXG4gICAgICAgIGlmIChwcm9wcy5pc0N1cnJlbnRVc2VyKSB7XG4gICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLm9uZGV2aWNlY2hhbmdlID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKChkZXZpY2VzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlRGV2aWNlc0NoYW5nZWQoZGV2aWNlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKVxuICAgICAgICAgICAgICAgIC50aGVuKChkZXZpY2VzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVEZXZpY2VzQ2hhbmdlZChkZXZpY2VzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcHMuaXNDdXJyZW50VXNlcikge1xuICAgICAgICAgICAgY29uc3VtZUZhaWxlZFByb2R1Y2VycygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCc9PT09PT09PT09PT09PT09PT09PT09REVTVFJPWUlORyBQQVJUSUNJUEFOVD09PT09PT09PT09PT09PT09PT09PT09PT0gOiAnICsgcHJvcHMuZGF0YS51c2VySWQpO1xuICAgICAgICAgICAgdW5tb3VudGVkUmVmLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAocHJvcHMuaXNDdXJyZW50VXNlcikge1xuICAgICAgICAgICAgICAgIC8vIFJlbGVhc2UgdGhlIGdsb2JhbCBkZXZpY2VjaGFuZ2UgaGFuZGxlciB0aGlzIGNvbXBvbmVudCBpbnN0YWxsZWQg4oCUXG4gICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGl0IHN1cnZpdmVzIHVubW91bnQgYW5kIGZpcmVzIGludG8gc3RhbGUgY29tcG9uZW50IHN0YXRlLlxuICAgICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMub25kZXZpY2VjaGFuZ2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIHN0b3BQcm9kdWNpbmcoJ2F1ZGlvJyk7XG4gICAgICAgICAgICAgICAgc3RvcFByb2R1Y2luZygndmlkZW8nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGNvbnN1bWVycykge1xuICAgICAgICAgICAgICAgIHJlbW92ZUNvbnN1bWVyKGtleSwgJ3ZpZGVvJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFN0b3AgZXZlcnkgYXVkaW8tbGV2ZWwgbWV0ZXIgKHNlbGYgbWljICsgYWxsIGNvbnN1bWVkIHN0cmVhbXMpLlxuICAgICAgICAgICAgbWV0ZXJzLmN1cnJlbnQuZm9yRWFjaCgoc3RvcCkgPT4gc3RvcCgpKTtcbiAgICAgICAgICAgIG1ldGVycy5jdXJyZW50LmNsZWFyKCk7XG5cbiAgICAgICAgICAgIHZjRXZlbnRNYW5hZ2VyLnJlbW92ZVN1YnNjcmlwdGlvbnMoZXZlbnRIYW5kbGVyKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICAvLyBNZXRlciBhIHN0cmVhbSBhbmQgYnJvYWRjYXN0IGl0cyBsZXZlbCB1bmRlciBgdXNlcklkYC4gS2V5ZWQgc28gd2UgY2FuXG4gICAgLy8gc3RvcC9yZXBsYWNlIGl0IHdoZW4gdGhlIGNvbnN1bWVyIGNsb3NlcyBvciB0aGUgcHJvZHVjZXIgcmVzdGFydHMuXG4gICAgY29uc3Qgc3RhcnRNZXRlciA9IChrZXksIHN0cmVhbSwgdXNlcklkKSA9PiB7XG4gICAgICAgIHN0b3BNZXRlcihrZXkpO1xuICAgICAgICBjb25zdCBzdG9wID0gc3RhcnRBdWRpb0xldmVsTWV0ZXIoc3RyZWFtLCAobGV2ZWwpID0+IHtcbiAgICAgICAgICAgIHZjRXZlbnRNYW5hZ2VyLmZpcmVFdmVudChWQ0V2ZW50VHlwZS5BVURJT19MRVZFTCwge3BheWxvYWQ6IHt1c2VySWQsIGxldmVsfX0pO1xuICAgICAgICB9KTtcbiAgICAgICAgbWV0ZXJzLmN1cnJlbnQuc2V0KGtleSwgc3RvcCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHN0b3BNZXRlciA9IChrZXkpID0+IHtcbiAgICAgICAgY29uc3Qgc3RvcCA9IG1ldGVycy5jdXJyZW50LmdldChrZXkpO1xuICAgICAgICBpZiAoc3RvcCkge1xuICAgICAgICAgICAgc3RvcCgpO1xuICAgICAgICAgICAgbWV0ZXJzLmN1cnJlbnQuZGVsZXRlKGtleSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcHJvZHVjZSA9IGFzeW5jICh0eXBlKSA9PiB7XG4gICAgICAgIGlmICghZGV2aWNlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdObyBhdmFpbGFibGUgZGV2aWNlJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWRldmljZS5jYW5Qcm9kdWNlKCd2aWRlbycpICYmIHR5cGUgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Nhbm5vdCBwcm9kdWNlIHZpZGVvJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNlbGVjdGVkQXVkaW9EZXZpY2UgJiYgdHlwZSA9PT0gJ2F1ZGlvJykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignTm8gYXVkaW8gZGV2aWNlIHNlbGVjdGVkJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvZHVjZXJzLmhhcyh0eXBlKSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1Byb2R1Y2VyIGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIHR5cGUgJyArIHR5cGUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG1lZGlhQ29uc3RyYWludHM7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnYXVkaW8nOlxuICAgICAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludHMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGRldmljZUlkOiBzZWxlY3RlZEF1ZGlvRGV2aWNlLmlkLFxuICAgICAgICAgICAgICAgICAgICBhdWRpbzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdmlkZW86IGZhbHNlXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludHMgPSBWSURFT19DT05TVFJBSU5UUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKG1lZGlhQ29uc3RyYWludHMpO1xuICAgICAgICBjb25zdCB0cmFjayA9IHR5cGUgPT09ICdhdWRpbycgPyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSA6IHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICB0cmFja1xuICAgICAgICB9O1xuXG4gICAgICAgIGF1ZGlvUmVmLmN1cnJlbnQgPSBzdHJlYW07XG4gICAgICAgIGlmICh0eXBlID09PSAnYXVkaW8nKSB7XG4gICAgICAgICAgICAvLyBNZXRlciB0aGUgbG9jYWwgbWljIHNvIHRoZSBzZWxmIHRpbGUgaGlnaGxpZ2h0cyB3aGVuIHlvdSBzcGVhay5cbiAgICAgICAgICAgIHN0YXJ0TWV0ZXIoJ3NlbGYtYXVkaW8nLCBzdHJlYW0sIHByb3BzLmRhdGEudXNlcklkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcHMuaXNIb3N0ICYmIHR5cGUgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgIG1lZGlhUmVjb3JkZXIuYWRkVHJhY2socHJvcHMuZGF0YS51c2VySWQsIHRyYWNrKTtcbiAgICAgICAgICAgIHRyYWNrcy5jdXJyZW50LnNldEF1ZGlvVHJhY2sodHJhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgIHBhcmFtcy5lbmNvZGluZ3MgPSBWSURFT19FTkNPRElOR1M7XG4gICAgICAgICAgICBwYXJhbXMuY29kZWNPcHRpb25zID0gVklERU9fQ09ERUNfT1BUSU9OUztcbiAgICAgICAgICAgIHRyYWNrcy5jdXJyZW50LnNldFZpZGVvVHJhY2sodHJhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHByb2R1Y2VyO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcHJvZHVjZXIgPSBhd2FpdCBwcm9kdWNlclRyYW5zcG9ydC5wcm9kdWNlKHBhcmFtcyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgICAgLy8gU3RvcCB0aGUganVzdC1jYXB0dXJlZCB0cmFjayBzbyB0aGUgbWljL2NhbSBpc24ndCBsZWZ0IGxpdmUgYWZ0ZXIgYSBmYWlsZWQgcHJvZHVjZS5cbiAgICAgICAgICAgIHRyYWNrLnN0b3AoKTtcbiAgICAgICAgICAgIC8vIEEgZmF0YWwgUlRQLWV4dGVuc2lvbiBjb2xsaXNpb24gb24gY3JlYXRlT2ZmZXIgY2FuJ3QgYmUgcmVjb3ZlcmVkIGluLXBsYWNlO1xuICAgICAgICAgICAgLy8gYXNrIHRoZSB1c2VyIHRvIHJlam9pbi4gVGhlIGljb24gaXMgTk9UIGZsaXBwZWQgdG8gdW5tdXRlZCAocHJvZHVjZSBmYWlsZWQpLlxuICAgICAgICAgICAgaWYgKGlzUnRwQ29sbGlzaW9uRXJyb3IoZSkpIHtcbiAgICAgICAgICAgICAgICB2Y0V2ZW50TWFuYWdlci5maXJlRXZlbnQoVkNFdmVudFR5cGUuU1lTVEVNX0FMRVJULCB7cGF5bG9hZDoge21lc3NhZ2U6IFJFSk9JTl9BTEVSVF9NRVNTQUdFfX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb2R1Y2VyKSB7XG4gICAgICAgICAgICAvLyBQcm9kdWNpbmcgaXMgY29uZmlybWVkIOKAlCBub3cgKGFuZCBvbmx5IG5vdykgY2xlYXIgdGhlIG11dGVkIGljb24gZm9yIHRoaXMga2luZC5cbiAgICAgICAgICAgIGlmIChwcm9wcy5pc0N1cnJlbnRVc2VyKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0QXVkaW9NdXRlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndmlkZW8nKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZpZGVvTXV0ZWQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcHJvZHVjZXJUcmFuc3BvcnQuZ2V0U3RhdHMoKVxuICAgICAgICAgICAgICAgIC50aGVuKChkYXRhKSA9PiBjb25zb2xlLmxvZyhkYXRhKSk7XG4gICAgICAgICAgICBwcm9kdWNlcnMuc2V0KHR5cGUsIHByb2R1Y2VyKTtcblxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgICAgICB2aWRlb1JlZi5jdXJyZW50LnNyY09iamVjdCA9IHN0cmVhbTtcbiAgICAgICAgICAgICAgICB2aWRlb1N0cmVhbS5jdXJyZW50ID0gc3RyZWFtO1xuICAgICAgICAgICAgICAgIHNldFZpZGVvUmVmcmVzaGVyKCF2aWRlb1JlZnJlc2hlcik7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coc3RyZWFtKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcHJvZHVjZXIub24oJ3RyYW5zcG9ydGNsb3NlJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0cmVhbS5zcmNPYmplY3QuZ2V0VHJhY2tzKClcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKHRyYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFjay5zdG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcHJvZHVjZXJzLmRlbGV0ZSh0eXBlKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBwcm9kdWNlci5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RyZWFtLnNyY09iamVjdC5nZXRUcmFja3MoKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAodHJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrLnN0b3AoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBwcm9kdWNlcnMuZGVsZXRlKHR5cGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgY29uc3VtZUZhaWxlZFByb2R1Y2VycyA9ICgpID0+IHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAodW5tb3VudGVkUmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChkZXZpY2UpIHtcbiAgICAgICAgICAgICAgICBvbk5ld1Byb2R1Y2VycyhmYWlsZWRQcm9kdWNlcnNEdWVUb051bGxUcmFuc3BvcnQsIHRydWUpO1xuICAgICAgICAgICAgICAgIGZhaWxlZFByb2R1Y2Vyc0R1ZVRvTnVsbFRyYW5zcG9ydC5zcGxpY2UoMCwgZmFpbGVkUHJvZHVjZXJzRHVlVG9OdWxsVHJhbnNwb3J0Lmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgY29uc3VtZUZhaWxlZFByb2R1Y2VycygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCA1MDAwKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdG9wUHJvZHVjaW5nID0gKHR5cGUsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgIGlmICghcHJvZHVjZXJzLmhhcyh0eXBlKSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1RoZXJlIGlzIG5vIHByb2R1Y2VyIGZvciB0aGlzIHR5cGUgJyArIHR5cGUpO1xuICAgICAgICAgICAgLy8gTm90aGluZyBpcyBiZWluZyBwcm9kdWNlZCwgc28gdGhlIHN0b3AgaXMgdHJpdmlhbGx5IHNhdGlzZmllZCDigJQgbGV0IHRoZVxuICAgICAgICAgICAgLy8gY2FsbGVyIChlLmcuIHRoZSBtdXRlIHRvZ2dsZSkgdHJlYXQgdGhpcyBhcyBhIGNvbmZpcm1lZCBcInN0b3BwZWRcIi5cbiAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcHJvZHVjZXJJZCA9IHByb2R1Y2Vycy5nZXQodHlwZSkuaWQ7XG4gICAgICAgIGNvbnNvbGUubG9nKCdDbG9zZSBwcm9kdWNlcicsIHByb2R1Y2VySWQpO1xuXG4gICAgICAgIHByb2R1Y2Vycy5nZXQodHlwZSlcbiAgICAgICAgICAgIC5jbG9zZSgpO1xuICAgICAgICBwcm9kdWNlcnMuZGVsZXRlKHR5cGUpO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgICAgdHJhY2tzLmN1cnJlbnQuc3RvcFZpZGVvVHJhY2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlID09PSAnYXVkaW8nKSB7XG4gICAgICAgICAgICB0cmFja3MuY3VycmVudC5zdG9wQXVkaW9UcmFjaygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coJ0NMT1NJTkcgUFJPRFVDRVIgT0YgSUQgOiAnICsgcHJvZHVjZXJJZCk7XG4gICAgICAgIHNvY2tldE1hbmFnZXIuZW1pdEV2ZW50KFZDRXZlbnRUeXBlLlBST0RVQ0VSX0NMT1NFRCwge1xuICAgICAgICAgICAgdXNlcklkOiBwcm9wcy5kYXRhLnVzZXJJZCxcbiAgICAgICAgICAgIHByb2R1Y2VySWQsXG4gICAgICAgICAgICByb29tSWQ6IHByb3BzLm1lZXRpbmdJZFxuICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKCdQUk9EVUNFUl9DTE9TRUQgRVJST1IgOiAnLCBlKSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTmV3UHJvZHVjZXJzID0gKHByb2R1Y2VycywgbG9hZGluZyA9IGZhbHNlKSA9PiB7XG4gICAgICAgIGlmKHByb2R1Y2Vycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIj09PT09PSBQUk9EVUNFUlMgUkVDRUlWRUQgOiBbIFwiICsgSlNPTi5zdHJpbmdpZnkocHJvZHVjZXJzKSArIFwiIF0gPT09PT09PVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgcHJvZHVjZXIgb2YgcHJvZHVjZXJzKSB7XG4gICAgICAgICAgICBpZiAoZGV2aWNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb2R1Y2VyLnVzZXJJZCA9PT0gcHJvcHMuZGF0YS51c2VySWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb2R1Y2VyLmtpbmQgPT09ICd2aWRlbycgJiYgIXByb2R1Y2VyLnNjcmVlblNoYXJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDQUxMSU5HIENPTlNVTUUgRlJPTSBPTiBORVcgUFJPRFVDRVJTIEZPUiA6ICcgKyBwcm9wcy5kYXRhLnVzZXJJZCArICcgLSAnICsgcHJvZHVjZXIucHJvZHVjZXJJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lKHByb2R1Y2VyLnByb2R1Y2VySWQsIHByb2R1Y2VyLmtpbmQsIGxvYWRpbmcsIHByb2R1Y2VyLnVzZXJJZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocHJvcHMuaXNDdXJyZW50VXNlciB8fCBsb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBzbWFsbCBwYXJ0aWNpcGFudCBib3ggYXQgdGhlIGJvdHRvbSBiZWxvbmdpbmcgdG8gdGhlIGN1cnJlbnQgdXNlciBtdXN0IGNvbnN1bWUgYWxsIGF1ZGlvXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSB3ZSBkbyBub3Qgd2FudCB0byBkaXN0dXJiIHRoZSBhdWRpbyBkdWUgdG8gYW55IHJlbmRlcmluZyBzdWNoIGFzIEJyaW5nIHRvIHZpZXdcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb2R1Y2VyLmtpbmQgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWUocHJvZHVjZXIucHJvZHVjZXJJZCwgcHJvZHVjZXIua2luZCwgbG9hZGluZywgcHJvZHVjZXIudXNlcklkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmFpbGVkUHJvZHVjZXJzRHVlVG9OdWxsVHJhbnNwb3J0LnB1c2gocHJvZHVjZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYoZmFpbGVkUHJvZHVjZXJzRHVlVG9OdWxsVHJhbnNwb3J0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiPT09PT09IFBST0RVQ0VSUyBUSEFUIENPVUxEIE5PVCBCRSBDT05TVU1FUyA6IFsgXCIgKyBKU09OLnN0cmluZ2lmeShmYWlsZWRQcm9kdWNlcnNEdWVUb051bGxUcmFuc3BvcnQpICsgXCIgXSA9PT09PT09XCIpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHJlbW92ZUNvbnN1bWVyID0gKGNvbnN1bWVySWQsIGtpbmQsIHVzZXJJZCkgPT4ge1xuICAgICAgICAvLyBTdG9wIGFueSBhY3RpdmUtc3BlYWtlciBtZXRlciBhdHRhY2hlZCB0byB0aGlzIGNvbnN1bWVyJ3Mgc3RyZWFtLlxuICAgICAgICBzdG9wTWV0ZXIoY29uc3VtZXJJZCk7XG4gICAgICAgIGlmIChraW5kID09PSAndmlkZW8nKSB7XG4gICAgICAgICAgICBpZiAodmlkZW9TdHJlYW0uY3VycmVudCkge1xuICAgICAgICAgICAgICAgIGlmICh2aWRlb1N0cmVhbS5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZpZGVvU3RyZWFtLmN1cnJlbnQuZ2V0VHJhY2tzKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uICh0cmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrLnN0b3AoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChraW5kID09PSAnYXVkaW8nKSB7XG4gICAgICAgICAgICBsZXQgYXVkaW9FbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29uc3VtZXJJZCk7XG4gICAgICAgICAgICBpZiAoYXVkaW9FbGVtZW50ICYmIGF1ZGlvRWxlbWVudC5zcmNPYmplY3QpIHtcbiAgICAgICAgICAgICAgICBhdWRpb0VsZW1lbnQuc3JjT2JqZWN0LmdldFRyYWNrcygpXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uICh0cmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2suc3RvcCgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmICh1c2VySWQgJiYgbWVkaWFSZWNvcmRlcikge1xuICAgICAgICAgICAgICAgICAgICBtZWRpYVJlY29yZGVyLnJlbW92ZVRyYWNrKHVzZXJJZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBlbGVtZW50QnlJZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByb3BzLmRhdGEudXNlcklkICsgJy1hdWRpby1lbC1jb250YWluZXInKTtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudEJ5SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudEJ5SWQucmVtb3ZlQ2hpbGQoYXVkaW9FbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdW1lcnMuZGVsZXRlKGNvbnN1bWVySWQpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiByZXRyeUNvbnN1bWUoa2luZCwgdXNlcklkLCBlLCByZXRyaWVzLCBwcm9kdWNlcklkLCBsb2FkaW5nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdGQUlMRUQgVE8gQ09OU1VNRSAnICsga2luZCArICcgRlJPTSAnICsgdXNlcklkKTtcbiAgICAgICAgY29uc29sZS5sb2coZSk7XG5cbiAgICAgICAgaWYgKHJldHJpZXMgPCAxMCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1JFLVRSWUlORyBbJyArIHJldHJpZXMgKyAnXScpO1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHVubW91bnRlZFJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3VtZShwcm9kdWNlcklkLCBraW5kLCBsb2FkaW5nLCB1c2VySWQsIHJldHJpZXMpO1xuICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnQ09NUExFVEVMWSBGQUlMRUQgVE8gQ09OU1VNRSAnICsga2luZCArICcgRlJPTSAnICsgdXNlcklkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnN1bWUgPSBhc3luYyAocHJvZHVjZXJJZCwga2luZCwgbG9hZGluZywgdXNlcklkLCByZXRyaWVzID0gMCkgPT4ge1xuICAgICAgICAvLyBHZXQgKGFuZCBsYXppbHkgY3JlYXRlKSB0aGUgcmVjdiB0cmFuc3BvcnQgZm9yIHRoaXMga2luZC4gYXVkaW8gYW5kXG4gICAgICAgIC8vIHZpZGVvIHJpZGUgc2VwYXJhdGUgdHJhbnNwb3J0cywgc28gYSBjbG9zZWQgY29uc3VtZXIncyBtLXNlY3Rpb24gaXNcbiAgICAgICAgLy8gbmV2ZXIgcmVjeWNsZWQgYWNyb3NzIGtpbmRzIOKAlCB3aGljaCBpcyB3aGF0IHRyaWdnZXJlZCB0aGUgUlRQXG4gICAgICAgIC8vIGV4dGVuc2lvbi1pZCBjb2xsaXNpb24uXG4gICAgICAgIGNvbnN0IHRyYW5zcG9ydCA9IGF3YWl0IHByb3BzLmdldFJlY3ZUcmFuc3BvcnQoa2luZCk7XG4gICAgICAgIGlmICghdHJhbnNwb3J0KSB7XG4gICAgICAgICAgICByZXRyeUNvbnN1bWUoa2luZCwgdXNlcklkLCBuZXcgRXJyb3IoJ3JlY3YgdHJhbnNwb3J0IHVuYXZhaWxhYmxlIGZvciAnICsga2luZCksIHJldHJpZXMsIHByb2R1Y2VySWQsIGxvYWRpbmcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIG1lZGlhU291cEhlbHBlci5nZXRDb25zdW1lU3RyZWFtKHByb2R1Y2VySWQsIGRldmljZS5ydHBDYXBhYmlsaXRpZXMsIHRyYW5zcG9ydCwgcHJvcHMubWVldGluZ0lkLFxuICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUsIGtpbmQpXG4gICAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgY29uc3VtZXIsXG4gICAgICAgICAgICAgICAgICAgICBzdHJlYW0sXG4gICAgICAgICAgICAgICAgICAgICBraW5kXG4gICAgICAgICAgICAgICAgIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnN1bWVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lcnMuc2V0KGNvbnN1bWVyLmlkLCBjb25zdW1lcik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Q09OU1VNRT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gOiAnICsga2luZCArICcgRk9SIDogJyArIHVzZXJJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2luZCA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2aWRlb1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvUmVmLmN1cnJlbnQuc3JjT2JqZWN0ID0gc3RyZWFtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvU3RyZWFtLmN1cnJlbnQgPSBzdHJlYW07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRWaWRlb011dGVkKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRWaWRlb1JlZnJlc2hlcighdmlkZW9SZWZyZXNoZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrcy5jdXJyZW50LnNldFZpZGVvVHJhY2soc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcHMuaXNDdXJyZW50VXNlciB8fCBsb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhdWRpb0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhdWRpbycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb0VsZW1lbnQuc3JjT2JqZWN0ID0gc3RyZWFtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb0VsZW1lbnQuaWQgPSBjb25zdW1lci5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9FbGVtZW50LnBsYXlzaW5saW5lID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRWxlbWVudC5hdXRvcGxheSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZWV0aW5nLWF1ZGlvLWVsLWNvbnRhaW5lcicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kQ2hpbGQoYXVkaW9FbGVtZW50KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNZXRlciB0aGlzIHBhcnRpY2lwYW50J3MgYXVkaW8gZm9yIGFjdGl2ZS1zcGVha2VyIGhpZ2hsaWdodC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRNZXRlcihjb25zdW1lci5pZCwgc3RyZWFtLCB1c2VySWQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcy5pc0hvc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhUmVjb3JkZXIuYWRkVHJhY2sodXNlcklkLCBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVyLm9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFja2VuZGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGtpbmQgKyBcIiBDT05TVU1FUiBUUkFDSyBFTkRFRCBGT1IgXCIgKyB1c2VySWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVDb25zdW1lcihjb25zdW1lci5pZCwga2luZCwgdXNlcklkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR3VhcmQ6IHRoZSBwYXJ0aWNpcGFudCBtYXkgaGF2ZSBsZWZ0LCBzbyBmaW5kKCkgY2FuIGJlIHVuZGVmaW5lZCDigJRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhZGluZyAudmlkZW9NdXRlZC8uYXVkaW9NdXRlZCBvbiBpdCB0aHJldy4gTm8gcGFydGljaXBhbnQg4oaSIG5vIHJldHJ5LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFja0VuZGVkUGFydGljaXBhbnQgPSBwYXJ0aWNpcGFudHMuZmluZCgocCkgPT4gcC51c2VySWQgPT09IHVzZXJJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFja0VuZGVkUGFydGljaXBhbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICgoa2luZCA9PT0gJ3ZpZGVvJyAmJiAhdHJhY2tFbmRlZFBhcnRpY2lwYW50LnZpZGVvTXV0ZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGtpbmQgPT09ICdhdWRpbycgJiYgIXRyYWNrRW5kZWRQYXJ0aWNpcGFudC5hdWRpb011dGVkKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHJ5Q29uc3VtZShraW5kLCB1c2VySWQsIG5ldyBFcnJvcigndHJhY2tlbmRlZCB3aGlsZSAnICsga2luZCArICcgaXMgTk9UIG11dGVkJyksIHJldHJpZXMsIHByb2R1Y2VySWQsIGxvYWRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZXIub24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zcG9ydGNsb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGtpbmQgKyBcIiBDT05TVU1FUiBDTE9TRUQgRk9SIFwiICsgdXNlcklkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ29uc3VtZXIoY29uc3VtZXIuaWQsIGtpbmQsIHVzZXJJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgIHJldHJ5Q29uc3VtZShraW5kLCB1c2VySWQsIGUsIHJldHJpZXMsIHByb2R1Y2VySWQsIGxvYWRpbmcpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgZ2V0UGFydGljaXBhbnROYW1lID0gKCkgPT4ge1xuICAgICAgICBsZXQgbmFtZSA9IHByb3BzLmRhdGEubmFtZTtcblxuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHByb3BzLmRhdGEudXNlcklkKSkge1xuICAgICAgICAgICAgbmFtZSA9IGAke25hbWV9IChHdWVzdClgO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Akeydjb2wtKi0qICcgKyAocHJvcHMuaXNDdXJyZW50VXNlciA/ICdtZWV0aW5nLXBhcnRpY2lwYW50LWNvbnRhaW5lci1jdXJyZW50LXVzZXInIDogJ21lZXRpbmctcGFydGljaXBhbnQtY29udGFpbmVyJyl9YH1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IHByb3BzLnBhZGRpbmcgPyBwcm9wcy5wYWRkaW5nIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogcHJvcHMuaGVpZ2h0ID8gcHJvcHMuaGVpZ2h0IDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnMTJweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcHJvcHMuaXNDdXJyZW50VXNlciA/ICcjMWYyOTM3JyA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IHByb3BzLmlzQ3VycmVudFVzZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcycHggc29saWQgJyArIChhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0QXBwbGljYXRpb25QcmltYXJ5Q29sb3IoKSB8fCAnIzFhM2M1ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4wNiknLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWN0aXZlLXNwZWFrZXIgaGlnaGxpZ2h0OiBhbiBpbnNldCByaW5nICh0aGUgdGlsZSBjbGlwc1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmZsb3csIHNvIGFuIG91dHNldCBzaGFkb3cgd291bGQgYmUgY3V0IG9mZikuXG4gICAgICAgICAgICAgICAgICAgICAgICBib3hTaGFkb3c6ICghYXVkaW9NdXRlZCAmJiBzb3VuZExldmVsID4gU1BFQUtJTkdfTEVWRUwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnaW5zZXQgMCAwIDAgM3B4ICcgKyAoYXBwbGljYXRpb25NYW5hZ2VyLmdldEFwcGxpY2F0aW9uUHJpbWFyeUNvbG9yKCkgfHwgJyMyMmM1NWUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogJ2JveC1zaGFkb3cgMTIwbXMgZWFzZS1vdXQnXG4gICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZpZGVvTXV0ZWQgfHwgIXZpZGVvUmVmLmN1cnJlbnQgfHwgIXZpZGVvUmVmLmN1cnJlbnQuc3JjT2JqZWN0KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NlbnRlcmVkLWZsZXgtYm94J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiBwcm9wcy5zaXppbmcgPT09ICdzbScgPyAnOHB4JyA6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17cHJvcHMuc2l6aW5nID09PSAnc20nID8gJ2F2YXRhci13cmFwcGVyLXNtJyA6ICdhdmF0YXItd3JhcHBlcid9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAocHJvcHMuc2l6aW5nID09PSAnc20nID8gNzIgOiAxMTIpICsgJ3B4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IChwcm9wcy5zaXppbmcgPT09ICdzbScgPyA3MiA6IDExMikgKyAncHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveFNoYWRvdzogIWF1ZGlvTXV0ZWQgJiYgc291bmRMZXZlbCA+IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnMCAwIDAgJyArICgzICsgc291bmRMZXZlbCAvIDEyKSArICdweCAnICsgKGFwcGxpY2F0aW9uTWFuYWdlci5nZXRBcHBsaWNhdGlvblByaW1hcnlDb2xvcigpIHx8ICcjMDA0NzZhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogJ2JveC1zaGFkb3cgOTBtcyBsaW5lYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMzYTQ2NTQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnI2ZmZidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3Byb3BzLnNpemluZyA9PT0gJ21kJyA/ICdhdmF0YXIgYXZhdGFyLW1kJyA6IHByb3BzLnNpemluZyA9PT0gJ3NtJyA/ICdhdmF0YXIgYXZhdGFyLXNtJyA6ICdhdmF0YXInfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IHByb3BzLnNpemluZyA9PT0gJ3NtJyA/ICcyMHB4JyA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRVcmwgPyA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kUmVwZWF0OiAnbm8tcmVwZWF0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kU2l6ZTogJ2NvdmVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kUG9zaXRpb246ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzUwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogYHVybCgke2Rvd25sb2FkVXJsfSlgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz4gOiBVdGlscy5nZXRJbml0aWFscyhwcm9wcy5kYXRhLm5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZpZGVvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17cHJvcHMuZGF0YS51c2VySWQgKyAnLXZpZGVvJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXs2NDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMyMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9QbGF5IHJlZj17dmlkZW9SZWZ9IG11dGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Rml0OiAnY292ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcHJvcHMuaXNDdXJyZW50VXNlciA/ICdzY2FsZVgoLTEpJyA6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg6ICcwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAodmlkZW9NdXRlZCB8fCAhdmlkZW9SZWYuY3VycmVudCB8fCAhdmlkZW9SZWYuY3VycmVudC5zcmNPYmplY3QpID8gJ25vbmUnIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKldlIG5lZWQgdGhpcyBlbGVtZW50IHRvIGNhcHR1cmUgcmVjb3JkaW5nIHNvdW5kKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuaXNIb3N0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhdWRpb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e3Byb3BzLmRhdGEudXNlcklkICsgJy1hdWRpbyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvUGxheSByZWY9e2F1ZGlvUmVmfSBtdXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnbm9uZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtwcm9wcy5zaXppbmcgPT09ICdzbScgPyAnbmFtZS1sYWJlbC1zbScgOiAnbmFtZS1sYWJlbCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b206ICcwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogcHJvcHMuc2l6aW5nID09PSAnc20nID8gJzZweCcgOiAnOHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdmbGV4LWVuZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhcDogJzRweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogJzcwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBwcm9wcy5zaXppbmcgPT09ICdzbScgPyAnMXB4IDhweCcgOiAnMnB4IDEwcHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNnB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwwLDAsMC41NSknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjZmZmJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBwcm9wcy5zaXppbmcgPT09ICdzbScgPyAnMTFweCcgOiAnMTNweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiAxLjQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkxlZnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogJ2F1dG8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyFwcm9wcy5pc0N1cnJlbnRVc2VyICYmIGdldFBhcnRpY2lwYW50TmFtZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmlzQ3VycmVudFVzZXIgJiYgJ1lvdSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvcHMuaXNDdXJyZW50VXNlciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e21hcmdpbkxlZnQ6ICc0cHgnLCBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtZW5kJywgZ2FwOiAnNHB4J319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuaXNIb3N0ICYmICFhdWRpb011dGVkID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMub25Ib3N0QXVkaW9NdXRlKHByb3BzLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcyNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMjRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnI2ZmZicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwwLDAsMC41NSknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc2cHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J01JQyd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYXVkaW9NdXRlZCA/ICdpbmxpbmUtZmxleCcgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjZmZmJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsMCwwLDAuNTUpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc2cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcycHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J01JQ19PRkYnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuaXNIb3N0ICYmICF2aWRlb011dGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLm9uSG9zdFZpZGVvTXV0ZShwcm9wcy5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMjRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMjRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjZmZmJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsMCwwLDAuNTUpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc2cHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J0NBTUVSQSd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmlzQ3VycmVudFVzZXIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtZW5kJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPVwiTXkgZGV2aWNlc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2tEZXZpY2VzSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9e29wZW5Nb3JlQWN0aW9ucyA/ICdkZXZpY2UtbWVudScgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPXtvcGVuTW9yZUFjdGlvbnMgPyAndHJ1ZScgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMjRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMjRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjZmZmJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsMCwwLDAuNTUpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc2cHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J1NFVFRJTkdTJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb3BzLmlzQ3VycmVudFVzZXIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7bWFyZ2luTGVmdDogJzRweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2hhbmRSYWlzZWQgJiYgPFBhblRvb2wgZm9udFNpemU9eydzbWFsbCd9IHN0eWxlPXt7Y29sb3I6ICcjZTJiMDMwJ319Lz59XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmlzQ3VycmVudFVzZXIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD17J21lZXRpbmctYXVkaW8tZWwtY29udGFpbmVyJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgICAgIGFuY2hvckVsPXthbmNob3JFbH1cbiAgICAgICAgICAgICAgICBpZD1cImRldmljZXMtbWVudVwiXG4gICAgICAgICAgICAgICAgb3Blbj17b3Blbk1vcmVBY3Rpb25zfVxuICAgICAgICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlRGV2aWNlTWVudX1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbG9zZURldmljZU1lbnV9XG4gICAgICAgICAgICAgICAgUGFwZXJQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICBlbGV2YXRpb246IDAsXG4gICAgICAgICAgICAgICAgICAgIHN4OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ3Zpc2libGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiAnZHJvcC1zaGFkb3coMHB4IDJweCA4cHggcmdiYSgwLDAsMCwwLjMyKSknLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXQ6IDEuNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICcmIC5NdWlMaXN0LXJvb3QnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlMWUxZTEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAnJiAuTXVpQXZhdGFyLXJvb3QnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMzIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWw6IC0wLjUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXI6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgJyY6YmVmb3JlJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogMTQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmdjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKDQ1ZGVnKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgekluZGV4OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbj17e1xuICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsOiAyMCxcbiAgICAgICAgICAgICAgICAgICAgdmVydGljYWw6IDEzNlxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgYW5jaG9yT3JpZ2luPXt7XG4gICAgICAgICAgICAgICAgICAgIGhvcml6b250YWw6ICdyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsOiAndG9wJ1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBhdWRpb0RldmljZXMubWFwKChkZXZpY2UsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPE1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IGNoYW5nZUF1ZGlvRGV2aWNlKGRldmljZSl9IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7Y29sb3I6IHNlbGVjdGVkQXVkaW9EZXZpY2UgJiYgc2VsZWN0ZWRBdWRpb0RldmljZS5pZCA9PT0gZGV2aWNlLmlkID8gJyMxOTg3NTQnIDogbnVsbH19PlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGRldmljZS5sYWJlbFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L01lbnVJdGVtPjtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L01lbnU+XG4gICAgICAgIDwvPlxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBWQ1Jvb21QYXJ0aWNpcGFudDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxZQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxlQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxlQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTSxnQkFBQSxHQUFBUCx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBTCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVEsV0FBQSxHQUFBTixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVMsS0FBQSxHQUFBUCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVUsY0FBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsUUFBQSxHQUFBVCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVksU0FBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEsY0FBQSxHQUFBWCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQWMsT0FBQSxHQUFBWixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQWUsbUJBQUEsR0FBQWIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFnQixnQkFBQSxHQUFBaEIsT0FBQTtBQUF1RCxTQUFBRSx1QkFBQWUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLFNBQUFsQix3QkFBQWtCLENBQUEsRUFBQUcsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFB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LEVBQUUsRUFBRSxHQUFHO1FBQ1AsaUJBQWlCLEVBQUU7VUFDZjVDLE1BQU0sRUFBRSxtQkFBbUI7VUFDM0JKLFlBQVksRUFBRTtRQUNsQixDQUFDO1FBQ0QsbUJBQW1CLEVBQUU7VUFDakJoTixLQUFLLEVBQUUsRUFBRTtVQUNURyxNQUFNLEVBQUUsRUFBRTtVQUNWOFAsRUFBRSxFQUFFLENBQUMsR0FBRztVQUNSQyxFQUFFLEVBQUU7UUFDUixDQUFDO1FBQ0QsVUFBVSxFQUFFO1VBQ1JDLE9BQU8sRUFBRSxJQUFJO1VBQ2I1QixPQUFPLEVBQUUsT0FBTztVQUNoQnhCLFFBQVEsRUFBRSxVQUFVO1VBQ3BCcUQsR0FBRyxFQUFFLENBQUM7VUFDTkMsS0FBSyxFQUFFLEVBQUU7VUFDVHJRLEtBQUssRUFBRSxFQUFFO1VBQ1RHLE1BQU0sRUFBRSxFQUFFO1VBQ1ZtUSxPQUFPLEVBQUUsU0FBUztVQUNsQmpDLFNBQVMsRUFBRSxnQ0FBZ0M7VUFDM0NDLE1BQU0sRUFBRTtRQUNaO01BQ0o7SUFDSixDQUFFO0lBQ0ZpQyxlQUFlLEVBQUU7TUFDYkMsVUFBVSxFQUFFLEVBQUU7TUFDZEMsUUFBUSxFQUFFO0lBQ2QsQ0FBRTtJQUNGQyxZQUFZLEVBQUU7TUFDVkYsVUFBVSxFQUFFLE9BQU87TUFDbkJDLFFBQVEsRUFBRTtJQUNkO0VBQUUsR0FHRTVPLFlBQVksQ0FBQzhPLEdBQUcsQ0FBQyxDQUFDNU4sTUFBTSxFQUFFNk4sS0FBSyxLQUFLO0lBQ2hDLG9CQUFPelQsTUFBQSxDQUFBcUIsT0FBQSxDQUFBeU4sYUFBQSxDQUFDaE8sU0FBQSxDQUFBNFMsUUFBUTtNQUFDekIsT0FBTyxFQUFFQSxDQUFBLEtBQU1sSyxpQkFBaUIsQ0FBQ25DLE1BQU0sQ0FBRTtNQUFDZ0YsR0FBRyxFQUFFNkk7SUFBTSxnQkFFOUR6VCxNQUFBLENBQUFxQixPQUFBLENBQUF5TixhQUFBO01BQ0lZLEtBQUssRUFBRTtRQUFDYSxLQUFLLEVBQUUzTCxtQkFBbUIsSUFBSUEsbUJBQW1CLENBQUMwQixFQUFFLEtBQUtWLE1BQU0sQ0FBQ1UsRUFBRSxHQUFHLFNBQVMsR0FBRztNQUFJO0lBQUUsR0FFN0dWLE1BQU0sQ0FBQ3NFLEtBRVAsQ0FFWSxDQUFDO0VBQ2YsQ0FBQyxDQUVILENBQ1IsQ0FBQztBQUVYLENBQUM7QUFBQyxJQUFBeUosUUFBQSxHQUFBblIsT0FBQSxDQUFBbkIsT0FBQSxHQUVhb0MsaUJBQWlCIiwiaWdub3JlTGlzdCI6W119
|