my-orders-tickets-widget 1.0.0-beta.47 → 1.0.0-beta.49

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/index.js CHANGED
@@ -1079,6 +1079,13 @@ const theme = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_2__.createTheme)(
1079
1079
  }
1080
1080
  },
1081
1081
  components: {
1082
+ MuiFormHelperText: {
1083
+ styleOverrides: {
1084
+ root: {
1085
+ fontSize: ".8em"
1086
+ }
1087
+ }
1088
+ },
1082
1089
  MuiButton: {
1083
1090
  styleOverrides: {
1084
1091
  root: {
@@ -1291,12 +1298,18 @@ const CheckboxQuestionField = _ref => {
1291
1298
  margin: "normal",
1292
1299
  error: error,
1293
1300
  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_4__.FormControlLabel, {
1301
+ sx: {
1302
+ alignItems: "flex-start"
1303
+ },
1294
1304
  control: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_4__.Checkbox, _objectSpread({
1295
1305
  name: questionSlug,
1296
1306
  checked: !!value,
1297
1307
  label: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)((openstack_uicore_foundation_lib_components_raw_html__WEBPACK_IMPORTED_MODULE_5___default()), {
1298
1308
  children: questionLabel
1299
- })
1309
+ }),
1310
+ sx: {
1311
+ marginTop: -1
1312
+ }
1300
1313
  /* eslint-disable-next-line react/jsx-props-no-spreading */
1301
1314
  }, rest)),
1302
1315
  label: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)((openstack_uicore_foundation_lib_components_raw_html__WEBPACK_IMPORTED_MODULE_5___default()), {
@@ -3576,8 +3589,7 @@ const RefundEmailSupport = _ref => {
3576
3589
  tickets,
3577
3590
  submitRequest,
3578
3591
  onRefundClick,
3579
- onRefundDetailClick,
3580
- onEmailSupportClick
3592
+ onRefundDetailClick
3581
3593
  } = _ref;
3582
3594
  const {
3583
3595
  t
@@ -3591,7 +3603,7 @@ const RefundEmailSupport = _ref => {
3591
3603
  children: [isRefundable && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3592
3604
  "aria-label": "refund request button",
3593
3605
  role: "button",
3594
- className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.orderSummaryButton, " \n ").concat(submitRequest ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.refundDisabled : ""),
3606
+ className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.orderSummaryButton, "\n ").concat(submitRequest ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.refundDisabled : ""),
3595
3607
  variant: "outlined",
3596
3608
  size: "large",
3597
3609
  onClick: onRefundClick,
@@ -3611,7 +3623,9 @@ const RefundEmailSupport = _ref => {
3611
3623
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.orderSummaryButton,
3612
3624
  variant: "outlined",
3613
3625
  size: "large",
3614
- onClick: onEmailSupportClick,
3626
+ target: "_top",
3627
+ rel: "noopener noreferrer",
3628
+ href: "mailto:".concat(summit.support_email),
3615
3629
  children: t("order_info.email_support")
3616
3630
  })]
3617
3631
  });
@@ -3621,7 +3635,6 @@ RefundEmailSupport.propTypes = {
3621
3635
  tickets: prop_types__WEBPACK_IMPORTED_MODULE_1___default().arrayOf(Object),
3622
3636
  onRefundClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
3623
3637
  onRefundDetailClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
3624
- onEmailSupportClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
3625
3638
  submitRequest: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool)
3626
3639
  };
3627
3640
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RefundEmailSupport);
@@ -3705,8 +3718,7 @@ const OrderSummary = _ref => {
3705
3718
  tickets: order === null || order === void 0 ? void 0 : order.memberTickets,
3706
3719
  submitRequest: submitRequest,
3707
3720
  onRefundClick: onRefundClick,
3708
- onRefundDetailClick: onRefundDetailClick,
3709
- onEmailSupportClick: () => {}
3721
+ onRefundDetailClick: onRefundDetailClick
3710
3722
  })
3711
3723
  })]
3712
3724
  });
@@ -5680,7 +5692,7 @@ const ReassignHeader = _ref => {
5680
5692
  const assignedToYou = (ticket === null || ticket === void 0 || (_ticket$owner = ticket.owner) === null || _ticket$owner === void 0 ? void 0 : _ticket$owner.email) === userEmail;
5681
5693
  const getSecondaryTitle = () => {
5682
5694
  var _ticket$owner2;
5683
- const user = assignedToYou ? "you" : ticket === null || ticket === void 0 || (_ticket$owner2 = ticket.owner) === null || _ticket$owner2 === void 0 ? void 0 : _ticket$owner2.email;
5695
+ const user = assignedToYou ? t("ticket_assign.header_reassign.yourself") : ticket === null || ticket === void 0 || (_ticket$owner2 = ticket.owner) === null || _ticket$owner2 === void 0 ? void 0 : _ticket$owner2.email;
5684
5696
  if (inProgress === "manage") {
5685
5697
  return "".concat(t("ticket_assign.header_reassign.delegated"), " ").concat(ticket.owner.first_name, " ").concat(ticket.owner.last_name, ".");
5686
5698
  }
@@ -6163,10 +6175,12 @@ const CompanyField = _ref => {
6163
6175
  values,
6164
6176
  touched,
6165
6177
  setFieldTouched,
6166
- setFieldValue
6178
+ setFieldValue,
6179
+ initialValues
6167
6180
  } = formik;
6168
6181
  const name = _constants__WEBPACK_IMPORTED_MODULE_7__.TICKET_ATTENDEE_KEYS.company;
6169
6182
  const value = values[name];
6183
+ const disabled = !!initialValues[name];
6170
6184
  const error = touched[name] && Boolean(errors[name]);
6171
6185
  const helperText = touched[name] && errors[name];
6172
6186
  react__WEBPACK_IMPORTED_MODULE_2___default().useEffect(() => {
@@ -6193,6 +6207,7 @@ const CompanyField = _ref => {
6193
6207
  freeSolo: true,
6194
6208
  includeInputInList: true,
6195
6209
  filterSelectedOptions: true,
6210
+ disabled: disabled,
6196
6211
  value: value,
6197
6212
  onBlur: () => setFieldTouched(name, true, true),
6198
6213
  getOptionLabel: option => {
@@ -6251,7 +6266,7 @@ const CompanyField = _ref => {
6251
6266
  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Typography, {
6252
6267
  variant: "body2",
6253
6268
  sx: {
6254
- fontSize: "1rem",
6269
+ fontSize: "1em",
6255
6270
  color: "text.secondary"
6256
6271
  },
6257
6272
  children: option.name
@@ -6554,7 +6569,8 @@ const TicketOwnerFields = _ref => {
6554
6569
  values,
6555
6570
  touched,
6556
6571
  handleChange,
6557
- handleBlur
6572
+ handleBlur,
6573
+ initialValues
6558
6574
  } = formik;
6559
6575
  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
6560
6576
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.wrapper,
@@ -6577,7 +6593,7 @@ const TicketOwnerFields = _ref => {
6577
6593
  name: name,
6578
6594
  label: t("ticket_detail.".concat(name)),
6579
6595
  value: values[name],
6580
- disabled: disabled || isDelegated,
6596
+ disabled: disabled || isDelegated || !!initialValues[name],
6581
6597
  onChange: handleChange,
6582
6598
  onBlur: handleBlur,
6583
6599
  error: touched[name] && Boolean(errors[name]),
@@ -8275,7 +8291,7 @@ const getTypeValidation = (type, name, isRequired) => {
8275
8291
  case _components_ExtraQuestionsFields_constants__WEBPACK_IMPORTED_MODULE_5__.QuestionType_CheckBoxList:
8276
8292
  schema = yup__WEBPACK_IMPORTED_MODULE_0__.array().of(yup__WEBPACK_IMPORTED_MODULE_0__.string());
8277
8293
  // eslint-disable-next-line no-magic-numbers
8278
- if (isRequired) schema = schema.min(1);
8294
+ if (isRequired) schema = schema.min(1, "".concat(name, " is required"));
8279
8295
  break;
8280
8296
  case _components_ExtraQuestionsFields_constants__WEBPACK_IMPORTED_MODULE_5__.QuestionType_CountryComboBox:
8281
8297
  case _components_ExtraQuestionsFields_constants__WEBPACK_IMPORTED_MODULE_5__.QuestionType_ComboBox:
@@ -9413,7 +9429,7 @@ module.exports = require("yup");
9413
9429
  \**********************************/
9414
9430
  /***/ ((module) => {
9415
9431
 
9416
- module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response","no_tickets":"No results found."},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on","clear":"Clear"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You can answer the extra questions now to complete the ticket, or you can select complete later.","answer_others_eq":"You can answer the extra questions for them to complete the ticket, or select complete later to let them do it.","complete_later":"Complete Later"},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the old address that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the old address that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","answer_your_eq":"You can answer the extra questions now to complete the ticket, or you can select complete later.","answer_others_eq":"You can answer the extra questions for them to complete the ticket, or select complete later to let them do it.","complete_later":"Complete Later"},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save","disclaimer_label":"I agree with the above."},"saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}}}');
9432
+ module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response","no_tickets":"No results found."},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on","clear":"Clear"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","yourself":"yourself","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save","disclaimer_label":"I agree with the above."},"saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}}}');
9417
9433
 
9418
9434
  /***/ }),
9419
9435
 
@@ -9423,7 +9439,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sig
9423
9439
  \**********************************/
9424
9440
  /***/ ((module) => {
9425
9441
 
9426
- module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response","no_tickets":"No results found."},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on","clear":"Clear"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You can answer the extra questions now to complete the ticket, or you can select complete later.","answer_others_eq":"You can answer the extra questions for them to complete the ticket, or select complete later to let them do it.","complete_later":"Complete Later"},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the old address that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the old address that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","answer_your_eq":"You can answer the extra questions now to complete the ticket, or you can select complete later.","answer_others_eq":"You can answer the extra questions for them to complete the ticket, or select complete later to let them do it.","complete_later":"Complete Later"},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save","disclaimer_label":"I agree with the above."},"saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}}}');
9442
+ module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response","no_tickets":"No results found."},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on","clear":"Clear"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","yourself":"yourself","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save","disclaimer_label":"I agree with the above."},"saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}}}');
9427
9443
 
9428
9444
  /***/ })
9429
9445
 
@@ -9603,4 +9619,4 @@ MyOrdersMyTicketsWidget.propTypes = {
9603
9619
  /******/ })()
9604
9620
  ;
9605
9621
  });
9606
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNBO0FBQ0E7QUFDQTtBQUNnSDs7Ozs7Ozs7Ozs7Ozs7OztBQ05oSDtBQUNBO0FBQ0E7QUFDd0U7Ozs7Ozs7Ozs7Ozs7OztBQ0h4RTtBQUNBO0FBQzBCOzs7Ozs7Ozs7Ozs7Ozs7O0FDRjFCO0FBQ0E7QUFDQTtBQUM0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNINUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDOFg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25COVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSaE07QUFDQTtBQUNBO0FBQ0E7QUFDZ0U7Ozs7Ozs7Ozs7Ozs7OztBQ0poRTtBQUNBO0FBQ21DOzs7Ozs7Ozs7OztBQ0ZuQzs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VDQUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7V0N0QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0E7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQSx5Q0FBeUMsd0NBQXdDO1dBQ2pGO1dBQ0E7V0FDQTs7Ozs7V0NQQTs7Ozs7V0NBQTtXQUNBO1dBQ0E7V0FDQSx1REFBdUQsaUJBQWlCO1dBQ3hFO1dBQ0EsZ0RBQWdELGFBQWE7V0FDN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3lDO0FBQ047QUFDSTtBQUN1QjtBQUNUO0FBQ2Q7QUFDa0I7QUFFRjtBQUFBO0FBRXZELE1BQU13Qix1QkFBdUIsR0FBSW5nQixLQUFLLElBQUs7RUFDekMsTUFBTTtJQUNKNlcsUUFBUTtJQUNSdUosWUFBWTtJQUNacHRDLE1BQU07SUFDTnlELFVBQVU7SUFDVnhELElBQUk7SUFDSjJqQyxRQUFRO0lBQ1I3N0I7RUFDRixDQUFDLEdBQUdpbEIsS0FBSztFQUVULE1BQU07SUFBRStXLEtBQUs7SUFBRVc7RUFBVSxDQUFDLEdBQUdGLG9EQUFZLENBQUM7SUFDeENYLFFBQVE7SUFDUnVKLFlBQVk7SUFDWnB0QyxNQUFNO0lBQ05DLElBQUk7SUFDSndELFVBQVU7SUFDVm1nQyxRQUFRO0lBQ1I3N0I7RUFDRixDQUFDLENBQUM7RUFFRixNQUFNc2xDLGdCQUFnQixHQUFHQSxDQUFBLEtBQU07SUFDN0IsTUFBTXRwQyxNQUFNLEdBQUcsSUFBSXVwQyxlQUFlLENBQUN6aUMsTUFBTSxDQUFDeStCLFFBQVEsQ0FBQ2lFLE1BQU0sQ0FBQztJQUMxRCxNQUFNQyxLQUFLLEdBQUd6cEMsTUFBTSxDQUFDMHBDLEdBQUcsQ0FBQyxZQUFZLENBQUM7SUFDdEMsSUFBSUQsS0FBSyxFQUFFekosS0FBSyxDQUFDcGtDLFFBQVEsQ0FBQztNQUFFNlgsSUFBSSxFQUFFdmEsaURBQVc7TUFBRTJFLE9BQU8sRUFBRTtJQUFLLENBQUMsQ0FBQztFQUNqRSxDQUFDO0VBRUR3WixnREFBUyxDQUFDLE1BQU07SUFDZDJvQixLQUFLLENBQUNwa0MsUUFBUSxDQUFDSSx5REFBZSxDQUFDQyxNQUFNLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBQy9DLENBQUMsRUFBRSxDQUFDRCxNQUFNLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBRWxCLG9CQUNFK0wsc0RBQUEsQ0FBQ3l4QixpREFBUTtJQUFDc0csS0FBSyxFQUFFQSxLQUFNO0lBQUFoM0IsUUFBQSxlQUNyQmYsc0RBQUEsQ0FBQ2toQyx3RUFBVztNQUNWUSxZQUFZLEVBQUVMLGdCQUFpQjtNQUMvQmxRLE9BQU8sRUFBRSxJQUFLO01BQ2R1SCxTQUFTLEVBQUVBLFNBQVU7TUFBQTMzQixRQUFBLGVBRXJCZixzREFBQSxDQUFDNmxCLCtEQUFvQjtRQUFDNEIsV0FBVztRQUFBMW1CLFFBQUEsZUFDL0JmLHNEQUFBLENBQUNpeEIsaUVBQWEsSUFBRTtNQUFDLENBQ0c7SUFBQyxDQUNaO0VBQUMsQ0FDTixDQUFDO0FBRWYsQ0FBQztBQUVEa1EsdUJBQXVCLENBQUM1L0IsU0FBUyxHQUFHO0VBQ2xDczJCLFFBQVEsRUFBRXg0QiwwREFBZ0I7RUFDMUIraEMsWUFBWSxFQUFFL2hDLDBEQUFnQjtFQUM5QnJMLE1BQU0sRUFBRXFMLDBEQUFnQjtFQUN4QjVILFVBQVUsRUFBRTRILDBEQUFnQjtFQUM1QnBMLElBQUksRUFBRW9MLDBEQUFnQjtFQUN0QnU0QixRQUFRLEVBQUV2NEIsMERBQWdCO0VBQzFCdEQsYUFBYSxFQUFFc0Qsd0RBQWNxQztBQUMvQixDQUFDO0FBRUQsaUVBQWV5L0IsdUJBQXVCLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9hY3Rpb25zLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Fzc2lnbkVRRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21EaWFsb2cvQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21EaWFsb2cvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tVGhlbWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvQXNzaWduZWRGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9CYWRnZUZlYXR1cmVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9GaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9GcmVlUGFpZEZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1Byb21vQ29kZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1NlYXJjaC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1NvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9TdGF0dXNGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9UaWNrZXRUeXBlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvRXJyb3JMYWJlbC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Mb2FkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9PcmRlclN1bW1hcnlUYWJsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvUmVmdW5kRW1haWxTdXBwb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0Fzc2lnbmVkVG9NZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0SXRlbS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kUmVxdWVzdGVkVGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvRGVsZWdhdGVGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9Bc3NpZ25IZWFkZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvSGVhZGVyL1JlYXNzaWduSGVhZGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL1JlYXNzaWduRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvQ29tcGFueUZpZWxkL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRUYWJzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFdyYXBwZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZUdldFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlU2Nyb2xsVG9FcnJvci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlVGlja2V0RGV0YWlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaTE4bi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvcmVkdWNlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvc3RvcmUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2F1dGguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3N1bW1pdFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy90aWNrZXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFdyYXBwZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYlwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlZHV4anMvdG9vbGtpdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBzZW50cnkvcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJmb3JtaWtcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpZHRva2VuLXZlcmlmaWVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwibW9tZW50LXRpbWV6b25lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicC1saW1pdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInByb3AtdHlwZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcXItY29kZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QvanN4LXJ1bnRpbWVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInl1cFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCAoKSA9PiB7XG5yZXR1cm4gIiwiaW1wb3J0IHtcbiAgYXV0aEVycm9ySGFuZGxlcixcbiAgY3JlYXRlQWN0aW9uLFxuICBkZWxldGVSZXF1ZXN0LFxuICBnZXRSZXF1ZXN0LFxuICBwdXRSZXF1ZXN0LFxuICBzdGFydExvYWRpbmcsXG4gIHN0b3BMb2FkaW5nXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IGdldElkVG9rZW4gfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgeyBvYmplY3RUb1F1ZXJ5U3RyaW5nIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiO1xuaW1wb3J0IElkVG9rZW5WZXJpZmllciBmcm9tIFwiaWR0b2tlbi12ZXJpZmllclwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGdldEFjY2Vzc1Rva2VuU2FmZWx5IH0gZnJvbSBcIi4vdXRpbHMvYXV0aFwiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRVJST1JfQ09ERVMsXG4gIEZJRlRZX1BFUl9QQUdFLFxuICBGSVJTVF9QQUdFLFxuICBQUk9NSVNFX0JBVENIX0xJTUlULFxuICBUQUJTXG59IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgUkVTRVRfU1RBVEUgPSBcIlJFU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfRklMVEVSID0gXCJSRVNFVF9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9BUElfRVJST1IgPSBcIlJFU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9TVEFURSA9IFwiU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgU0VUX0FQSV9FUlJPUiA9IFwiU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IENIQU5HRV9GSUxURVIgPSBcIkNIQU5HRV9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfU09SVCA9IFwiQ0hBTkdFX1NPUlRcIjtcblxuLy8gT1JERVJTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9VU0VSX09SREVSUyA9IFwiR0VUX09SREVSU1wiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9PUkRFUiA9IFwiUkVGVU5EX09SREVSXCI7XG5leHBvcnQgY29uc3QgU0VUX0FDVElWRV9PUkRFUl9JRCA9IFwiU0VUX0FDVElWRV9PUkRFUl9JRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9VU0VSX09SREVSUyA9IFwiRklMVEVSX1VTRVJfT1JERVJTXCI7XG5cbi8vIFRJQ0tFVFMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMgPSBcIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVCA9IFwiVVBEQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX1RJQ0tFVCA9IFwiUkVTRVRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9USUNLRVQgPSBcIlJFQ0VJVkVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSA9IFwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRVwiO1xuZXhwb3J0IGNvbnN0IEFTU0lHTl9USUNLRVQgPSBcIkFTU0lHTl9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBERUxFR0FURV9USUNLRVQgPSBcIkRFTEVHQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9USUNLRVQgPSBcIlJFRlVORF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFTkRfTk9USUZJQ0FUSU9OID0gXCJSRVNFTkRfTk9USUZJQ0FUSU9OXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVIgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TID0gXCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCIsXG4gIGV4dHJhUXVlc3Rpb25zOiBcImV4dHJhX3F1ZXN0aW9uc1wiXG59O1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQgPVxuICBcIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURURcIjtcblxuLy8gVVNFUiBDT05UU1xuZXhwb3J0IGNvbnN0IFNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9JRFBfUFJPRklMRSA9IFwiVVBEQVRFX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU0VUX1VTRVIgPSBcIlNFVF9VU0VSXCI7XG5cbi8vIFNVTU1JVCBDT05TVFNcbmV4cG9ydCBjb25zdCBTRVRfU1VNTUlUID0gXCJTRVRfU1VNTUlUXCI7XG5leHBvcnQgY29uc3QgR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TID0gXCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyA9IFwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1NcIjtcbmV4cG9ydCBjb25zdCBDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIkNMRUFSX01BUktFVElOR19TRVRUSU5HU1wiO1xuXG5leHBvcnQgY29uc3QgcmVzZXRUaWNrZXQgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldFN0YXRlID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9TVEFURSkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEZpbHRlciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfRklMVEVSKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RXJyb3IgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0FQSV9FUlJPUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRSZWR1Y2VyU3RhdGUgPSAoc3VtbWl0LCB1c2VyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9TVEFURSkoeyBzdW1taXQsIHVzZXIgfSkpO1xufTtcblxuLy8gRklMVEVSIC8gU09SVCBDT05TVEFOVFNcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0RBVEUgPSBcIkZJTFRFUl9WQVJfREFURVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSA9IFwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSA9IFwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEID0gXCJGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTID0gXCJGSUxURVJfVkFSX09XTkVSX1NUQVRVU1wiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfUFJPTU9DT0RFID0gXCJGSUxURVJfVkFSX1BST01PQ09ERVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfRlJFRV9QQUlEID0gXCJGSUxURVJfVkFSX0ZSRUVfUEFJRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSID0gXCJGSUxURVJfVkFSX09SREVSX05VTUJFUlwiO1xuXG4vLyBGSUxURVIgLyBTT1JUIEFDVElPTlNcbmV4cG9ydCBjb25zdCBjaGFuZ2VGaWx0ZXIgPSAoZmlsdGVyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKENIQU5HRV9GSUxURVIpKGZpbHRlcikpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoYW5nZVNvcnQgPSAoc29ydCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihDSEFOR0VfU09SVCkoc29ydCkpO1xufTtcblxuLy8gRklMVEVSL1NPUlQgUEFSU0VcbmNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlck9iaiwgY3VycmVudFRhYikgPT4ge1xuICBjb25zdCBmaWx0ZXIgPSBbXTtcbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX0RBVEUpIHtcbiAgICBmaWx0ZXIucHVzaChgY3JlYXRlZFtdJHtmaWx0ZXJPYmoubG93ZXJ9JiYke2ZpbHRlck9iai51cHBlcn1gKTtcbiAgfVxuICBpZiAoXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSAmJlxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX2JhZGdlX2ZlYXR1cmVzX2lkXCJcbiAgICAgICAgOiBcImJhZGdlX2ZlYXR1cmVzX2lkXCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLmpvaW4oXCJ8fFwiKX1gXG4gICAgKTtcbiAgfVxuICBpZiAoXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUgJiZcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRS5sZW5ndGggPiAwXG4gICkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcInRpY2tldHNfdHlwZV9pZFwiIDogXCJ0aWNrZXRfdHlwZV9pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUuam9pbihcInx8XCIpfWBcbiAgICApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX2Fzc2lnbmVkX3RvXCIgOiBcImFzc2lnbmVkX3RvXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX293bmVyX3N0YXR1c1wiIDogXCJvd25lcl9zdGF0dXNcIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PV05FUl9TVEFUVVN9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX0ZSRUVfUEFJRCkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPSBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwiYW1vdW50XCIgOiBcImZpbmFsX2Ftb3VudFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX0ke2ZpbHRlck9iai5GSUxURVJfVkFSX0ZSRUVfUEFJRCA9PT0gXCJGcmVlXCIgPyBcIj09MFwiIDogXCI+MFwifWBcbiAgICApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9QUk9NT0NPREUpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX3Byb21vX2NvZGVcIiA6IFwicHJvbW9fY29kZVwiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PUAke2ZpbHRlck9iai5GSUxURVJfVkFSX1BST01PQ09ERX1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSKSB7XG4gICAgZmlsdGVyLnB1c2goYG51bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9YCk7XG4gIH1cbiAgcmV0dXJuIGZpbHRlcjtcbn07XG5cbmNvbnN0IGdldFNvcnREaXJlY3Rpb24gPSAoZGlyZWN0aW9uKSA9PiAoZGlyZWN0aW9uID09PSBcImFzY1wiID8gXCIrXCIgOiBcIi1cIik7XG5cbi8vIHBheWxvYWQ6IHsgaHR0cENvZGUsIHRpdGxlLCBodG1sOiBjb250ZW50LCB0eXBlIH1cbmNvbnN0IGVycm9ySGFuZGxlck5vdGlmeSA9IChwYXlsb2FkLCBjYWxsYmFjaykgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQVBJX0VSUk9SKShwYXlsb2FkKSk7XG4gIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbn07XG5cbmNvbnN0IGN1c3RvbUF1dGhFcnJvckhhbmRsZXIgPSAoZXJyLCByZXMpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChhdXRoRXJyb3JIYW5kbGVyKGVyciwgcmVzLCBlcnJvckhhbmRsZXJOb3RpZnkpKTtcbn07XG5cbmNvbnN0IGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyID0gKHJlc3BvbnNlKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgY29uc3QgY29kZSA9IHJlc3BvbnNlLnN0YXR1cztcbiAgbGV0IG1zZztcbiAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gIHN3aXRjaCAoY29kZSkge1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MDNcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMudXNlcl9ub3RfYXV0aHpcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAxXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnNlc3Npb25fZXhwaXJlZFwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MTJcIl06XG4gICAgICBtc2cgPSBcIlwiO1xuICAgICAgT2JqZWN0LmVudHJpZXMocmVzcG9uc2UuZXJyb3JzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKE51bWJlci5pc05hTihrZXkpKSB7XG4gICAgICAgICAgbXNnID0gYCR7bXNnfSAke2tleX06IGA7XG4gICAgICAgIH1cblxuICAgICAgICBtc2cgPSBgJHttc2d9ICR7dmFsdWV9IDxicj5gO1xuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNTAwXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnNlcnZlcl9lcnJvclwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBtc2cgPSByZXNwb25zZS5zdGF0dXNUZXh0O1xuICB9XG5cbiAgZGlzcGF0Y2goZXJyb3JIYW5kbGVyTm90aWZ5KHsgdGl0bGU6IGkxOG4udChcImVycm9ycy5lcnJvclwiKSwgaHRtbDogbXNnIH0pKTtcbn07XG5cbi8vIE9SREVSUyBBQ1RJT05TXG5leHBvcnQgY29uc3QgZ2V0VXNlck9yZGVycyA9XG4gICh7XG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyID0ge30sXG4gICAgc29ydCA9IHt9XG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIG9yZGVyOiBcIi1jcmVhdGVkXCIsXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiXSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgVEFCUy5PUkRFUlMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1VTRVJfT1JERVJTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvbWVgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlcixcbiAgICAgIHsgZmlsdGVyLCBzb3J0IH1cbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2V0QWN0aXZlT3JkZXJJZCA9IChvcmRlcklkKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQUNUSVZFX09SREVSX0lEKShvcmRlcklkKSk7XG5cbi8vIFVTRVIgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHNldFVzZXIgPSAodXNlcikgPT4gKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1VTRVIpKHVzZXIpKTtcblxuLy8gVElDS0VUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJUaWNrZXRzID1cbiAgKHtcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIgPSB7fSxcbiAgICBzb3J0ID0ge31cbiAgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQsIHVzZXIgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHsgdXNlclByb2ZpbGUgfSA9IHVzZXI7XG4gICAgaWYgKCFzdW1taXQpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG4gICAgY29uc3QgZmllbGRzID0gW1xuICAgICAgXCJvcmRlci5pZFwiLFxuICAgICAgXCJvcmRlci5vd25lcl9maXJzdF9uYW1lXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2xhc3RfbmFtZVwiLFxuICAgICAgXCJvcmRlci5vd25lcl9lbWFpbFwiLFxuICAgICAgXCJvd25lci5pZFwiLFxuICAgICAgXCJvd25lci5lbWFpbFwiLFxuICAgICAgXCJvd25lci5maXJzdF9uYW1lXCIsXG4gICAgICBcIm93bmVyLmxhc3RfbmFtZVwiLFxuICAgICAgXCJvd25lci5zdGF0dXNcIixcbiAgICAgIFwiYmFkZ2Uubm9uZVwiXG4gICAgXTtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCIsIGBvcmRlcl9vd25lcl9pZDw+JHt1c2VyUHJvZmlsZS5pZH1gXSxcbiAgICAgIGV4cGFuZDogXCJvcmRlcixvd25lcix0aWNrZXRfdHlwZSxiYWRnZSxiYWRnZS5mZWF0dXJlc1wiLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBmaWVsZHM6IGZpZWxkcy5qb2luKFwiLFwiKSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lLGJhZGdlLmZlYXR1cmVzXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIFRBQlMuVElDS0VUUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9hbGwvdGlja2V0cy9tZWAsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRzQnlPcmRlciA9XG4gICh7XG4gICAgb3JkZXJJZCxcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIsXG4gICAgc29ydFxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW10sXG4gICAgICBmaWVsZHM6IFwiYmFkZ2Uubm9uZVwiLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxyZWZ1bmRfcmVxdWVzdHMucmVmdW5kZWRfdGF4ZXMscmVmdW5kX3JlcXVlc3RzLnJlZnVuZGVkX3RheGVzLnRheCxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIixcbiAgICAgIG9yZGVyOiBcIitpZFwiLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmUsYmFkZ2UuZmVhdHVyZXNcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgVEFCUy5USUNLRVRTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0c2AsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZXNlbmROb3RpZmljYXRpb24gPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCB7IG1lc3NhZ2UgfSA9IHRpY2tldDtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRVNFTkRfTk9USUZJQ0FUSU9OKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9hdHRlbmRlZS9yZWludml0ZWAsXG4gICAgICB7IG1lc3NhZ2UgfSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZFRpY2tldCA9XG4gICh7IHRpY2tldCB9KSA9PlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwicmVmdW5kX3JlcXVlc3RzLHRpY2tldF90eXBlXCIsXG4gICAgICBmaWVsZHM6IFwicmVmdW5kX3JlcXVlc3RzLnN0YXR1c1wiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUZVTkRfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9yZWZ1bmRgLFxuICAgICAge30sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZEJ1bGtUaWNrZXRzID1cbiAgKHsgdGlja2V0cyB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gpID0+IHtcbiAgICBjb25zdCBsaW1pdCA9IHBMaW1pdChQUk9NSVNFX0JBVENIX0xJTUlUKTtcbiAgICBjb25zdCBhbGxSZWZ1bmRUaWNrZXRDYWxscyA9IHRpY2tldHMubWFwKCh0aWNrZXQpID0+XG4gICAgICBsaW1pdCgoKSA9PiBkaXNwYXRjaChyZWZ1bmRUaWNrZXQoeyB0aWNrZXQgfSkpKVxuICAgICk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFsuLi5hbGxSZWZ1bmRUaWNrZXRDYWxsc10pXG4gICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWxseVJlcXVlc3RlZCA9IHJlc1xuICAgICAgICAgIC5maWx0ZXIoKHIpID0+IHIucmVzcG9uc2U/LnJlZnVuZF9yZXF1ZXN0cz8ubGVuZ3RoKVxuICAgICAgICAgIC5tYXAoKHIpID0+IHIucmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4gc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSk7XG4gIH07XG5cbi8vIHVwZGF0ZSB0aGUgdGlja2V0cyB0aGF0IGhhdmUgYmVlbiBzdWNlc3NmdWxseSByZWZ1bmRlZFxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPVxuICAodGlja2V0c1JlZnVuZFJlcXVlc3RlZCkgPT4gKGRpc3BhdGNoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQpKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpXG4gICAgKTtcblxuLy8gU1VNTUlUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldEV4dHJhUXVlc3Rpb25zID1cbiAgKGF0dGVuZGVlSWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBwYWdlOiAxLFxuICAgICAgcGVyX3BhZ2U6IEZJRlRZX1BFUl9QQUdFLFxuICAgICAgZXhwYW5kOiBcIipzdWJfcXVlc3Rpb25fcnVsZXMsKnN1Yl9xdWVzdGlvbiwqdmFsdWVzXCIsXG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBcInRpY2tldHNfZXhjbHVkZV9pbmFjdGl2ZXM9PXRydWVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9hdHRlbmRlZXMvJHthdHRlbmRlZUlkfS9hbGxvd2VkLWV4dHJhLXF1ZXN0aW9uc2A7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS50aGVuKCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0ID1cbiAgKHRpY2tldElkLCBvcmRlcklkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH1gO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRVRfVElDS0VUKSxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX1RJQ0tFVCksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmNvbnN0IG5vcm1hbGl6ZVRpY2tldCA9IChlbnRpdHkpID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IHsgLi4uZW50aXR5IH07XG5cbiAgaWYgKCFlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZCkge1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueSA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55X2lkID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQ7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZEVudGl0eTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoUHJvZmlsZSA9XG4gIChkYXRhLCBjb21wYW55LCB0aWNrZXRPd25lcikgPT5cbiAgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyB1cGRhdGVQcm9maWxlIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuXG4gICAgLy8gZW1haWwgc2hvdWxkIG1hdGNoICggb25seSB1cGRhdGUgbXkgcHJvZmlsZSBpcyB0aWNrZXQgYmVsb25ncyB0byBtZSEpXG4gICAgLy8gYW5kIGlmIHRoZSB0aWNrZXQgZG9lc24ndCBoYXZlIGEgbWFuYWdlclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgY2hhbmdlcyBpbiB0aGUgdGlja2V0IGRhdGEgdG8gdXBkYXRlIHRoZSBwcm9maWxlXG4gICAgY29uc3Qge1xuICAgICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfY29tcGFueVxuICAgIH0gPSBkYXRhO1xuICAgIGNvbnN0IGhhc01hbmFnZXIgPSB0aWNrZXRPd25lcj8ubWFuYWdlcj8uaWQgfHwgdGlja2V0T3duZXI/Lm1hbmFnZXJfaWQ7XG4gICAgY29uc3QgaXRzTWUgPSB1c2VyUHJvZmlsZS5lbWFpbCA9PT0gYXR0ZW5kZWVfZW1haWw7XG4gICAgY29uc3QgcHJvZmlsZUNoYW5nZWQgPVxuICAgICAgYXR0ZW5kZWVfY29tcGFueS5uYW1lICE9PSBjb21wYW55IHx8XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5maXJzdF9uYW1lIHx8XG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUgIT09IHVzZXJQcm9maWxlLmxhc3RfbmFtZTtcblxuICAgIGlmIChpdHNNZSAmJiAhaGFzTWFuYWdlciAmJiBwcm9maWxlQ2hhbmdlZCkge1xuICAgICAgY29uc3QgbmV3UHJvZmlsZSA9IHtcbiAgICAgICAgZmlyc3RfbmFtZTogYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgICAgbGFzdF9uYW1lOiBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICAgIGNvbXBhbnk6IGF0dGVuZGVlX2NvbXBhbnkubmFtZSB8fCBhdHRlbmRlZV9jb21wYW55XG4gICAgICB9O1xuXG4gICAgICAvLyB0aGlzIGlzIGEgY2FsbGJhY2sgbWV0aG9kIHRoYXQgdXBkYXRlcyB1c2VyUHJvZmlsZSBpbiBBUEkgYW5kIGV2ZW50LXNpdGVcbiAgICAgIHVwZGF0ZVByb2ZpbGUobmV3UHJvZmlsZSk7XG4gICAgfVxuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZVRpY2tldERldGFpbHMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGlkVG9rZW4gPSBnZXRJZFRva2VuKCk7XG4gICAgbGV0IGNvbXBhbnkgPSBcIlwiO1xuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB2ZXJpZmllciA9IG5ldyBJZFRva2VuVmVyaWZpZXIoKTtcbiAgICAgICAgY29uc3Qgand0ID0gdmVyaWZpZXIuZGVjb2RlKGlkVG9rZW4pO1xuICAgICAgICBjb21wYW55ID0gand0LnBheWxvYWQuY29tcGFueTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRFbnRpdHksXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChyZWZyZXNoUHJvZmlsZShhbnN3ZXJzLCBjb21wYW55LCB0aWNrZXQub3duZXIpKTtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgYXNzaWduQXR0ZW5kZWUgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGF0dGVuZGVlX2VtYWlsLCBtZXNzYWdlID0gbnVsbCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IHsgYXR0ZW5kZWVfZW1haWwgfTtcbiAgICBpZiAobWVzc2FnZSkgcGF5bG9hZC5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oQVNTSUdOX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICBwYXlsb2FkLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlYXNzaWduVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLCBvd25lciwgb3duZXIuZXh0cmFfcXVlc3Rpb25zLCBvcmRlci5zdW1taXRcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICB7fSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLnRoZW4oKCkgPT5cbiAgICAgIGRpc3BhdGNoKGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkpXG4gICAgKTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGRlbGVnYXRlVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWU6IGZpcnN0TmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZTogbGFzdE5hbWUsXG4gICAgICBhdHRlbmRlZV9lbWFpbDogZW1haWxcbiAgICB9O1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihERUxFR0FURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vZGVsZWdhdGVgLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzYXZlRXh0cmFRdWVzdGlvbnMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIGFuc3dlcnMsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRQREYgPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gb2JqZWN0VG9RdWVyeVN0cmluZyhwYXJhbXMpO1xuICAgIGNvbnN0IGFwaVVybCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9wZGY/JHtxdWVyeVN0cmluZ31gO1xuXG4gICAgcmV0dXJuIGZldGNoKGFwaVVybCwge1xuICAgICAgcmVzcG9uc2VUeXBlOiBcIkJsb2JcIixcbiAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9wZGZcIiB9XG4gICAgfSlcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmJsb2IoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC50aGVuKChwZGYpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwocGRmKTtcbiAgICAgICAgbGluay5ocmVmID0gdXJsO1xuICAgICAgICBsaW5rLmRvd25sb2FkID0gXCJ0aWNrZXQucGRmXCI7XG4gICAgICAgIGxpbmsuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudChcImNsaWNrXCIpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIpO1xuICB9O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi9Gb3JtRm9vdGVyXCI7XG5pbXBvcnQgdXNlU2Nyb2xsVG9FcnJvciBmcm9tIFwiLi4vLi4vaG9va3MvdXNlU2Nyb2xsVG9FcnJvclwiO1xuaW1wb3J0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgZnJvbSBcIi4uL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lclwiO1xuaW1wb3J0IHsgYnVpbGRWYWxpZGF0aW9uU2NoZW1hLCBwYXJzZUFuc3dlcnMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuY29uc3QgQXNzaWduRVFGb3JtID0gKHtcbiAgdGlja2V0LFxuICBzdW1taXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBvblN1Ym1pdCxcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiBwYXJzZUFuc3dlcnModGlja2V0Lm93bmVyLCBleHRyYVF1ZXN0aW9ucywge30sIGZhbHNlLCB0cnVlKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIGZhbHNlLFxuICAgICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeVxuICAgICksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGNvbnN0IHJlbGV2YW50QW5zd2VycyA9IHBhcnNlQW5zd2VycyhcbiAgICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWssIFwicmVhc3NpZ25EcmF3ZXJcIik7XG5cbiAgaWYgKGV4dHJhUXVlc3Rpb25zPy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8Qm94PlxuICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHMgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfSBmb3JtaWs9e2Zvcm1pa30gLz5cbiAgICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5leHRyYV9xdWVzdGlvbnNfZm9ybS5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuQXNzaWduRVFGb3JtLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25FUUZvcm07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBkZWZhdWx0V2lkdGggPSA5MDtcblxuY29uc3QgQ29weVRleHQgPSAoe1xuICB0ZXh0LFxuICB0b29sdGlwVGV4dCxcbiAgaGlkZUNvcHkgPSBmYWxzZSxcbiAgdHJ1bmNhdGVkID0gdHJ1ZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0b29sdGlwVGV4dFRvVXNlID0gdG9vbHRpcFRleHQgfHwgdChcImdlbmVyYWwuY29weV90b19jbGlwYm9hcmRcIik7XG4gIGNvbnN0IFt0b29sdGlwLCBzZXRUb29sdGlwXSA9IFJlYWN0LnVzZVN0YXRlKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICBjb25zdCBjbGFzc05hbWVzID0gYCR7dHJ1bmNhdGVkICYmIHN0eWxlcy50cnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuXG4gIGNvbnN0IGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgc2V0VG9vbHRpcCh0KFwiZ2VuZXJhbC5jb3BpZWRcIikpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0VG9vbHRpcCh0b29sdGlwVGV4dFRvVXNlKTtcbiAgICB9LCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3NOYW1lc30gc3R5bGU9e3sgd2lkdGggfX0+XG4gICAgICAgIHt0ZXh0fVxuICAgICAgPC9zcGFuPlxuICAgICAgeyFoaWRlQ29weSAmJiAoXG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXt0b29sdGlwfT5cbiAgICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb3B5SWNvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHl9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvcHktbnVtYmVyLWJ1dHRvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNvcHlUZXh0LnByb3BUeXBlcyA9IHtcbiAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdG9vbHRpcFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGhpZGVDb3B5OiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJ1bmNhdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmV2ZXJzZWQ6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weVRleHQ7XG4iLCJpbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IGRlZmF1bHRDb250ZXh0VmFsdWUgPSB7XG4gIHNldE1lc3NhZ2U6ICgpID0+IHt9LFxuICBzZXRNZXNzYWdlQ2FsbGJhY2s6ICgpID0+IHt9XG59O1xuXG5jb25zdCBDdXN0b21EaWFsb2dDb250ZXh0ID0gY3JlYXRlQ29udGV4dChkZWZhdWx0Q29udGV4dFZhbHVlKTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tRGlhbG9nQ29udGV4dDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIERpYWxvZyxcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nQ29udGVudFRleHQsXG4gIERpYWxvZ1RpdGxlXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IEN1c3RvbURpYWxvZyA9ICh7IG9wZW4sIG9uQ2xvc2UsIHRpdGxlLCBib2R5IH0pID0+IChcbiAgPERpYWxvZ1xuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJhbGVydC1kaWFsb2ctdGl0bGVcIlxuICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICA+XG4gICAgPERpYWxvZ1RpdGxlIGlkPVwiYWxlcnQtZGlhbG9nLXRpdGxlXCI+e3RpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICA8RGlhbG9nQ29udGVudFRleHRcbiAgICAgICAgaWQ9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGJvZHkgfX1cbiAgICAgIC8+XG4gICAgPC9EaWFsb2dDb250ZW50PlxuICA8L0RpYWxvZz5cbik7XG5cbkN1c3RvbURpYWxvZy5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGJvZHk6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbURpYWxvZztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxubGV0IGRhcmtDb2xvciA9IFwiXCI7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAvLyBHZXQgdGhlIHJvb3QgZWxlbWVudFxuICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gIC8vIFJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgQ1NTIHZhcmlhYmxlXG4gIGRhcmtDb2xvciA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICBcIi0tY29sb3JfYmFja2dyb3VuZF9kYXJrXCJcbiAgKTtcbn1cblxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHBhbGV0dGU6IHtcbiAgICBwcmltYXJ5OiB7XG4gICAgICBtYWluOiBkYXJrQ29sb3JcbiAgICB9LFxuICAgIHRleHQ6IHtcbiAgICAgIHByaW1hcnk6IFwiIzAwMDAwMERFXCIsXG4gICAgICBzZWNvbmRhcnk6IFwiIzAwMDAwMDk5XCJcbiAgICB9XG4gIH0sXG4gIHR5cG9ncmFwaHk6IHtcbiAgICBib2R5MToge1xuICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICB9LFxuICAgIGg1OiB7XG4gICAgICBmb250U2l6ZTogXCIxLjZlbVwiLFxuICAgICAgZm9udFdlaWdodDogNDAwLFxuICAgICAgXCImLk11aVR5cG9ncmFwaHktZ3V0dGVyQm90dG9tXCI6IHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiBcIjIwcHhcIlxuICAgICAgfVxuICAgIH0sXG4gICAgaDY6IHtcbiAgICAgIGZvbnRTaXplOiBcIjEuNGVtXCIsXG4gICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICBcIiYuTXVpVHlwb2dyYXBoeS1ndXR0ZXJCb3R0b21cIjoge1xuICAgICAgICBtYXJnaW5Cb3R0b206IFwiMjBweFwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjb21wb25lbnRzOiB7XG4gICAgTXVpQnV0dG9uOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiMWVtXCIsXG4gICAgICAgICAgZm9udFdlaWdodDogNTAwLFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IFwiMjJweFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aVRhYjoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIjE0cHhcIixcbiAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOTlcIixcbiAgICAgICAgICBcIiYuTXVpLXNlbGVjdGVkXCI6IHtcbiAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpVGFiczoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgaW5kaWNhdG9yOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgQ3VzdG9tVGhlbWUgPSAoeyBjaGlsZHJlbiB9KSA9PiAoXG4gIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+e2NoaWxkcmVufTwvVGhlbWVQcm92aWRlcj5cbik7XG5cbkN1c3RvbVRoZW1lLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbVRoZW1lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWxcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuICBjb25zdCBxdWVzdGlvbk1heFZhbHVlcyA9IHF1ZXN0aW9uLm1heF9zZWxlY3RlZF92YWx1ZXM7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICBjb25zdCBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UgPSAoY2hlY2tlZCwgdmFsKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFucyA9IHZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IG1heFNlbGVjdGlvblJlYWNoZWQgPVxuICAgICAgcXVlc3Rpb25NYXhWYWx1ZXMgIT09IDAgJiYgY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBtYXJnaW49XCJub3JtYWxcIiBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgSW5wdXRMYWJlbCwgTWVudUl0ZW0sIFNlbGVjdCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25RdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICB2YWx1ZT17b3AudmFsdWV9XG4gICAgICAgICAgICAgIGNvbnRyb2w9ezxSYWRpbyAvPn1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5UZXh0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1J1bGUgPSAodmFsdWUsIHJ1bGUpID0+IHtcbiAgY29uc3QgdmFsdWVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzO1xuXG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAoIXZhbHVlLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGxldCByZXMgPSBydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCI7XG4gICAgdmFsdWVzLmZvckVhY2goKHYpID0+IHtcbiAgICAgIGlmIChydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCIpIHtcbiAgICAgICAgcmVzID0gcmVzICYmIHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3JcbiAgICAgICAgcmVzID0gcmVzIHx8IHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgcmV0dXJuIHZhbHVlcy5pbmNsdWRlcyh2YWx1ZT8udG9TdHJpbmcoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tWaXNpYmlsaXR5ID0gKHJ1bGUsIHJ1bGVSZXN1bHQpID0+IHtcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eSA9PT0gXCJWaXNpYmxlXCIpIHtcbiAgICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgICByZXR1cm4gISFydWxlUmVzdWx0O1xuICAgIH1cbiAgICAvLyBOb24gRXF1YWxcbiAgICByZXR1cm4gIXJ1bGVSZXN1bHQ7XG4gIH1cbiAgLy8gbm90IHZpc2libGVcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgIHJldHVybiAhcnVsZVJlc3VsdDtcbiAgfVxuICByZXR1cm4gISFydWxlUmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvU2x1ZyA9ICh0ZXh0LCBxdWVzdGlvbklkKSA9PiB7XG4gIGNvbnN0IHRleHRMQyA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGAke3RleHRMQy5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2csIFwiX1wiKX1fJHtxdWVzdGlvbklkfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGFiZWwgPSAocSkgPT5cbiAgLy8gcmVwbGFjZSBsaW5lIGJyZWFrcyBhbmQgcmVtb3ZlIG91dGVyIDxwPlxuICBxPy5sYWJlbD8ucmVwbGFjZSgvXFxuL2csIFwiIFwiKS5yZXBsYWNlKC88cD4oLiopPFxcL3A+L2dpLCBcIiQxXCIpO1xuXG5leHBvcnQgY29uc3QgaXNBbnN3ZXJlZCA9IChhbnN3ZXIpID0+IHtcbiAgaWYgKCFhbnN3ZXIpIHJldHVybiBmYWxzZTtcbiAgLy8gY2hlY2sgdHlwZVxuICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIpKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcInN0cmluZ1wiKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcIm51bWJlclwiKSByZXR1cm4gYW5zd2VyID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gYW5zd2VyO1xuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tJZlZhbHVlTWF0Y2ggPSAoYW5zd2VyLCBjb21wYXJlVmFsKSA9PiB7XG4gIGNvbnN0IGFuc3dlckFycmF5ID0gQXJyYXkuaXNBcnJheShhbnN3ZXIpID8gYW5zd2VyIDogW2Fuc3dlcl07XG5cbiAgcmV0dXJuIGFuc3dlckFycmF5LnNvbWUoKHYpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb21wYXJlVmFsKSkge1xuICAgICAgcmV0dXJuIGNvbXBhcmVWYWwuaW5jbHVkZXModik7XG4gICAgfVxuICAgIHJldHVybiB2ID09PSBjb21wYXJlVmFsO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlSW5pdGlhbFZhbHVlID0gKHEpID0+IHtcbiAgc3dpdGNoIChxLnR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbHVlID0gKGFucywgdHlwZSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBhbnMgPT09IFwidHJ1ZVwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBhbnM/LnNwbGl0KFwiLFwiKSB8fCBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gYW5zIHx8IFwiXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIGFucyB8fCBudWxsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYW5zO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtQW53ZXJzRm9ybWF0ID0gKGFuc3dlcnMpID0+IHtcbiAgY29uc3Qge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICAuLi5leHRyYV9xdWVzdGlvbnNcbiAgfSA9IGFuc3dlcnM7XG5cbiAgY29uc3QgZm9ybWF0dGVkRVEgPSBPYmplY3QuZW50cmllcyhleHRyYV9xdWVzdGlvbnMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIHF1ZXN0aW9uX2lkOiBwYXJzZUludChrZXkuc3BsaXQoXCJfXCIpLnBvcCgpLCAxMCksXG4gICAgYW5zd2VyOiB2YWx1ZT8udG9TdHJpbmcoKSB8fCBudWxsXG4gIH0pKTtcblxuICByZXR1cm4ge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICBleHRyYV9xdWVzdGlvbnM6IGZvcm1hdHRlZEVRXG4gIH07XG59O1xuIiwiZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0ID0gXCJUZXh0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHRBcmVhID0gXCJUZXh0QXJlYVwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja2JveCA9IFwiQ2hlY2tCb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0ID0gXCJSYWRpb0J1dHRvbkxpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ29tYm9Cb3ggPSBcIkNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCA9IFwiQ2hlY2tCb3hMaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCA9IFwiQ291bnRyeUNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uID0gXCJSYWRpb0J1dHRvblwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQge1xuICB0b1NsdWcsXG4gIGlzQW5zd2VyZWQsXG4gIGNoZWNrVmlzaWJpbGl0eSxcbiAgY2hlY2tSdWxlXG59IGZyb20gXCIuL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0LFxuICBRdWVzdGlvblR5cGVfVGV4dCxcbiAgUXVlc3Rpb25UeXBlX1RleHRBcmVhXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRleHRRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgRHJvcGRvd25RdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkXCI7XG5cbmNvbnN0IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSAocXVlc3Rpb25UeXBlKSA9PiB7XG4gIHN3aXRjaCAocXVlc3Rpb25UeXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dEFyZWE6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dDoge1xuICAgICAgcmV0dXJuIFRleHRRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OiB7XG4gICAgICByZXR1cm4gUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OiB7XG4gICAgICByZXR1cm4gRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gUmVhY3QuRnJhZ21lbnQ7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyA9ICh7XG4gIGV4dHJhUXVlc3Rpb25zLFxuICBjbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25zXCIsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uXCIsXG4gIHJlYWRPbmx5ID0gZmFsc2UsXG4gIGFsbG93RWRpdCA9IHRydWUsXG4gIGZvcm1pa1xufSkgPT4ge1xuICBjb25zdCByZW5kZXJSdWxlID0gKHJ1bGUsIHF1ZXN0aW9uU2x1ZykgPT4ge1xuICAgIGNvbnN0IHJ1bGVSZXN1bHQgPSBjaGVja1J1bGUoZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLCBydWxlKTtcbiAgICBjb25zdCBpc1Zpc2libGUgPSBjaGVja1Zpc2liaWxpdHkocnVsZSwgcnVsZVJlc3VsdCk7XG5cbiAgICBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJldHVybiByZW5kZXJRdWVzdGlvbihydWxlLnN1Yl9xdWVzdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgY29uc3QgcmVuZGVyUXVlc3Rpb24gPSAocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIC8vIGRpc2FibGUgZmllbGQgaWYgZWRpdCBpc24ndCBhbGxvd2VkIGFuZCB0aGUgcXVlc3Rpb25zIGlzIGFuc3dlcmVkXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9XG4gICAgICAoIWFsbG93RWRpdCAmJiBpc0Fuc3dlcmVkKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSkpIHx8IHJlYWRPbmx5O1xuICAgIGNvbnN0IFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50KHEudHlwZSk7XG5cbiAgICBjb25zdCBmb3JtaWtQcm9wcyA9IHtcbiAgICAgIHZhbHVlOiBmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBvbkNoYW5nZTogZm9ybWlrLmhhbmRsZUNoYW5nZSxcbiAgICAgIG9uQmx1cjogZm9ybWlrLmhhbmRsZUJsdXIsXG4gICAgICBlcnJvcjpcbiAgICAgICAgZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBCb29sZWFuKGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSksXG4gICAgICBoZWxwZXJUZXh0OiBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIHNldEZpZWxkVmFsdWU6IGZvcm1pay5zZXRGaWVsZFZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UXVlc3Rpb25GaWVsZENvbXBvbmVudFxuICAgICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgcXVlc3Rpb249e3F9XG4gICAgICAgIHF1ZXN0aW9uQ2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICAgICAgaXNEaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgey4uLmZvcm1pa1Byb3BzfVxuICAgICAgPlxuICAgICAgICB7cS5zdWJfcXVlc3Rpb25fcnVsZXM/Lm1hcCgocnVsZSkgPT4gcmVuZGVyUnVsZShydWxlLCBxdWVzdGlvblNsdWcpKX1cbiAgICAgIDwvUXVlc3Rpb25GaWVsZENvbXBvbmVudD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57ZXh0cmFRdWVzdGlvbnMubWFwKHJlbmRlclF1ZXN0aW9uKX08L2Rpdj47XG59O1xuXG5FeHRyYVF1ZXN0aW9uc0ZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxsb3dFZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBBc3NpZ25lZEZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRDogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiTWVcIiwgbGFiZWw6IFwiTWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiU29tZW9uZUVsc2VcIiwgbGFiZWw6IFwiU29tZW9uZSBFbHNlXCIgfSxcbiAgICB7IHZhbHVlOiBcIk5vYm9keVwiLCBsYWJlbDogXCJOb2JvZHlcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQXNzaWduZWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQXNzaWduZWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbmVkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEJhZGdlRmVhdHVyZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyBiYWRnZV9mZWF0dXJlc190eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IGZpbHRlclZhbHVlcz8uaW5jbHVkZXModmFsdWUpXG4gICAgICA/IGZpbHRlclZhbHVlcy5maWx0ZXIoKGYpID0+IGYgIT09IHZhbHVlKVxuICAgICAgOiBbLi4uZmlsdGVyVmFsdWVzLCB2YWx1ZV07XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQmFkZ2UgRmVhdHVyZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YmFkZ2VfZmVhdHVyZXNfdHlwZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPEJveCBzeD17eyBweTogMSB9fSBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2JmLm5hbWV9fWB9PlxuICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBoYW5kbGVGaWx0ZXJDaGFuZ2UoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtmaWx0ZXJWYWx1ZXMuaW5jbHVkZXMoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2RjNcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5CYWRnZUZlYXR1cmVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJhZGdlRmVhdHVyZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IEZpbHRlckxpc3RJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIjtcbmltcG9ydCB7XG4gIEJhZGdlLFxuICBCb3gsXG4gIEJ1dHRvbixcbiAgQ2FyZCxcbiAgQ2FyZEhlYWRlcixcbiAgRGl2aWRlcixcbiAgUGFwZXJcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IGNvbm5lY3QgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBCYWRnZUZlYXR1cmVGaWx0ZXIgZnJvbSBcIi4vQmFkZ2VGZWF0dXJlRmlsdGVyXCI7XG5pbXBvcnQge1xuICBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUsXG4gIEZJTFRFUl9WQVJfRlJFRV9QQUlELFxuICBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyxcbiAgRklMVEVSX1ZBUl9QUk9NT0NPREUsXG4gIEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVELFxuICBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgVGlja2V0VHlwZUZpbHRlciBmcm9tIFwiLi9UaWNrZXRUeXBlRmlsdGVyXCI7XG5pbXBvcnQgQXNzaWduZWRGaWx0ZXIgZnJvbSBcIi4vQXNzaWduZWRGaWx0ZXJcIjtcbmltcG9ydCBTdGF0dXNGaWx0ZXIgZnJvbSBcIi4vU3RhdHVzRmlsdGVyXCI7XG5pbXBvcnQgRnJlZVBhaWRGaWx0ZXIgZnJvbSBcIi4vRnJlZVBhaWRGaWx0ZXJcIjtcbmltcG9ydCBQcm9tb0NvZGVGaWx0ZXIgZnJvbSBcIi4vUHJvbW9Db2RlRmlsdGVyXCI7XG5cbmNvbnN0IEZpbHRlciA9ICh7IG9uRmlsdGVyLCBvblJlc2V0LCBmaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93RmlsdGVyTGlzdCwgc2V0U2hvd0ZpbHRlckxpc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0RhdGVwaWNrZXIsIHNldFNob3dEYXRlcGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ZpbHRlck51bUFjdGl2ZSwgc2V0RmlsdGVyTnVtQWN0aXZlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBmaWx0ZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCAmJiAhZmlsdGVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgaWYgKHNob3dGaWx0ZXJMaXN0KSB7XG4gICAgICAgIHNldFNob3dGaWx0ZXJMaXN0KGZhbHNlKTtcbiAgICAgICAgc2V0U2hvd0RhdGVwaWNrZXIoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd0ZpbHRlckxpc3RdKTtcblxuICBjb25zdCBNQVJHSU5fUklHSFRfV0lUSF9CQURHRSA9IDE7XG4gIGNvbnN0IEFERF9GSUxURVJfTlVNQkVSID0gMTtcblxuICBjb25zdCBjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzID0gKGZpbHRlcnMpID0+IHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpLmZvckVhY2goKFssIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGNvdW50ICs9IHZhbHVlLmxlbmd0aDtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLnRyaW0oKSAhPT0gXCJcIikge1xuICAgICAgICBjb3VudCArPSBBRERfRklMVEVSX05VTUJFUjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmIHZhbHVlID4gMCkge1xuICAgICAgICBjb3VudCArPSBBRERfRklMVEVSX05VTUJFUjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY291bnQ7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRGaWx0ZXJOdW1BY3RpdmUoY2FsY3VsYXRlQWN0aXZlRmlsdGVycyhmaWx0ZXIpKTtcbiAgfSwgW2ZpbHRlcl0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyUmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0RmlsdGVyTnVtQWN0aXZlKDApO1xuICAgIG9uUmVzZXQoKTtcbiAgICB0b2dnbGUoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ29udGFpbmVyfSByZWY9e2ZpbHRlclJlZn0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBvbkNsaWNrPXt0b2dnbGV9XG4gICAgICA+XG4gICAgICAgIDxCYWRnZVxuICAgICAgICAgIGJhZGdlQ29udGVudD17ZmlsdGVyTnVtQWN0aXZlfVxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgc3g9e3sgbXI6IGZpbHRlck51bUFjdGl2ZSA+IDAgPyBNQVJHSU5fUklHSFRfV0lUSF9CQURHRSA6IFwiXCIgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxGaWx0ZXJMaXN0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVySWNvbn0gLz5cbiAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTGFiZWx9Pnt0KFwiZmlsdGVyLmZpbHRlclwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5maWx0ZXJMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9ICR7XG4gICAgICAgICAgc2hvd0ZpbHRlckxpc3QgPyBzdHlsZXMuc2hvd0ZpbHRlckxpc3QgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8UGFwZXIgZWxldmF0aW9uPXs4fSBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDaGVja2JveENvbnRhaW5lcn0+XG4gICAgICAgICAgPENhcmQgdmFyaWFudD1cIm91dGxpbmVkXCI+XG4gICAgICAgICAgICA8Q2FyZEhlYWRlclxuICAgICAgICAgICAgICB0aXRsZT1cIkZpbHRlcnNcIlxuICAgICAgICAgICAgICBhY3Rpb249e1xuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUZpbHRlclJlc2V0fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xlYW5CdXR0b259XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3QoXCJmaWx0ZXIuY2xlYXJcIil9XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8RGl2aWRlciAvPlxuICAgICAgICAgICAgPEJhZGdlRmVhdHVyZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8QXNzaWduZWRGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8U3RhdHVzRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFRpY2tldFR5cGVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxQcm9tb0NvZGVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9QUk9NT0NPREVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8RnJlZVBhaWRGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9GUkVFX1BBSURdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9DYXJkPlxuICAgICAgICA8L1BhcGVyPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5GaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9ICh7IHdpZGdldFN0YXRlIH0pID0+ICh7XG4gIHNvcnQ6IHdpZGdldFN0YXRlLnNvcnQsXG4gIGZpbHRlcjogd2lkZ2V0U3RhdGUuZmlsdGVyXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMsIHt9KShGaWx0ZXIpO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0ZSRUVfUEFJRCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEZyZWVQYWlkRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfRlJFRV9QQUlEOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJGcmVlXCIsIGxhYmVsOiBcIkZyZWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiUGFpZFwiLCBsYWJlbDogXCJQYWlkXCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9GUkVFX1BBSURdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkZyZWUgLyBQYWlkXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkZyZWVQYWlkRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGcmVlUGFpZEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBUZXh0RmllbGRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1BST01PQ09ERSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFByb21vQ29kZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1BST01PQ09ERTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuICBjb25zdCBbcHJvbW9Db2RlLCBzZXRQcm9tb0NvZGVdID0gdXNlU3RhdGUoZmlsdGVyVmFsdWVzIHx8IFwiXCIpO1xuXG4gIGNvbnN0IGRlYm91bmNlVGltZXIgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IERFQk9VTkNFX1ZBTFVFID0gNTAwO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0UHJvbW9Db2RlKGZpbHRlclZhbHVlcyB8fCBcIlwiKTtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldikgPT4ge1xuICAgIGNvbnN0IG5ld1Byb21vQ29kZSA9IGV2LnRhcmdldC52YWx1ZTtcbiAgICAvLyB1cGRhdGUgbG9jYWwgc3RhdGUgc28gdGhlIGlucHV0IHJlZmxlY3RzIGNoYW5nZXNcbiAgICBzZXRQcm9tb0NvZGUobmV3UHJvbW9Db2RlKTtcblxuICAgIC8vIHJlbW92ZSBjdXJyZW50IGRlYm91bmNlXG4gICAgaWYgKGRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudCk7XG4gICAgfVxuXG4gICAgLy8gZGVib3VuY2Ugc2V0IHRvIDUwMCBtc1xuICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgb25GaWx0ZXIoe1xuICAgICAgICBbRklMVEVSX1ZBUl9QUk9NT0NPREVdOiBuZXdQcm9tb0NvZGVcbiAgICAgIH0pO1xuICAgIH0sIERFQk9VTkNFX1ZBTFVFKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIHJlbW92ZSBkZWJvdW5jZSBvbiByZWxvYWRcbiAgICBpZiAoZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KTtcbiAgICB9XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlByb21vIENvZGVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHB5OiAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHByb21vIGNvZGVcIlxuICAgICAgICAgICAgdmFsdWU9e3Byb21vQ29kZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9XG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAvPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblByb21vQ29kZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUHJvbW9Db2RlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IElucHV0QmFzZSBmcm9tIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09SREVSX05VTUJFUiB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFNlYXJjaENvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICBtYXJnaW5SaWdodDogXCIwXCIsXG4gIG1hcmdpbkxlZnQ6IFwiMFwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG4gIGRpc3BsYXk6IFwiYmxvY2tcIlxufSkpO1xuY29uc3QgU2VhcmNoSWNvbldyYXBwZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiXG59KSk7XG5jb25zdCBTdHlsZWRJbnB1dEJhc2UgPSBzdHlsZWQoSW5wdXRCYXNlKSgoKSA9PiAoe1xuICBjb2xvcjogXCJpbmhlcml0XCIsXG4gIGJvcmRlckJvdHRvbTogXCIxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKVwiLFxuICBwYWRkaW5nTGVmdDogXCIyNXB4XCIsXG4gIHBhZGRpbmdSaWdodDogXCIyNXB4XCIsXG4gIGZvbnRTaXplOiBcIjFlbVwiXG59KSk7XG5jb25zdCBDbG9zZUljb25XcmFwcGVyID0gc3R5bGVkKENsb3NlSWNvbikoKCkgPT4gKHtcbiAgcGFkZGluZzogXCIycHhcIixcbiAgZm9udFNpemU6IFwiMS41ZW1cIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgdG9wOiBcIjBcIixcbiAgcmlnaHQ6IFwiMFwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gIHpJbmRleDogXCIxMDAwXCJcbn0pKTtcblxuY29uc3QgU2VhcmNoID0gKHsgb25TZWFyY2ggfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93Q2xvc2UsIHNldFNob3dDbG9zZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIG5hdGl2ZUV2ZW50OiB7XG4gICAgICAgIHRhcmdldDogeyB2YWx1ZSB9XG4gICAgICB9XG4gICAgfSA9IGV2ZW50O1xuICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgb25TZWFyY2goe1xuICAgICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiB2YWx1ZVxuICAgICAgfSk7XG4gICAgICBzZXRTaG93Q2xvc2UodHJ1ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZXNldFNlYXJjaCA9ICgpID0+IHtcbiAgICBzZXRTZWFyY2hWYWx1ZShcIlwiKTtcbiAgICBvblNlYXJjaCh7XG4gICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiBcIlwiXG4gICAgfSk7XG4gICAgc2V0U2hvd0Nsb3NlKHRydWUpO1xuICAgIHNldFNob3dDbG9zZShmYWxzZSk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxTZWFyY2hDb250YWluZXI+XG4gICAgICAgIHtzaG93Q2xvc2UgJiYgKFxuICAgICAgICAgIDxDbG9zZUljb25XcmFwcGVyIG9uQ2xpY2s9e3Jlc2V0U2VhcmNofT5cbiAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICA8L0Nsb3NlSWNvbldyYXBwZXI+XG4gICAgICAgICl9XG4gICAgICAgIDxTZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgICA8U2VhcmNoSWNvbiAvPlxuICAgICAgICA8L1NlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICA8U3R5bGVkSW5wdXRCYXNlXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoXCJvcmRlcl9zZWFyY2gub3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIGlucHV0UHJvcHM9e3sgXCJhcmlhLWxhYmVsXCI6IFwic2VhcmNoXCIgfX1cbiAgICAgICAgICB2YWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hWYWx1ZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgIC8+XG4gICAgICA8L1NlYXJjaENvbnRhaW5lcj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgUGFwZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEltcG9ydEV4cG9ydEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFNvcnQgPSAoeyBvblNvcnQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93U29ydCwgc2V0U2hvd1NvcnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzb3J0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKHNvcnRSZWYuY3VycmVudCAmJiAhc29ydFJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHNldFNob3dTb3J0KGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd1NvcnRdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd1NvcnQoIXNob3dTb3J0KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnNvcnRDb250YWluZXJ9IG9uQ2xpY2s9e3RvZ2dsZX0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgcmVmPXtzb3J0UmVmfVxuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxJbXBvcnRFeHBvcnRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0SWNvbn0gLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc29ydExhYmVsfT57dChcInNvcnQuc29ydFwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAge3Nob3dTb3J0ICYmIChcbiAgICAgICAgPFBhcGVyXG4gICAgICAgICAgZWxldmF0aW9uPXs4fVxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNvcnRMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9YH1cbiAgICAgICAgPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Tb3J0KHsgZGlyZWN0aW9uOiBcImRlc2NcIiwgbmFtZTogXCJjcmVhdGVkXCIgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJzb3J0Lm5ld19maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU29ydCh7IGRpcmVjdGlvbjogXCJhc2NcIiwgbmFtZTogXCJjcmVhdGVkXCIgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJzb3J0Lm9sZF9maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTb3J0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFN0YXR1c0ZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX09XTkVSX1NUQVRVUzogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiSW5jb21wbGV0ZVwiLCBsYWJlbDogXCJJbmNvbXBsZXRlXCIgfSxcbiAgICB7IHZhbHVlOiBcIkNvbXBsZXRlXCIsIGxhYmVsOiBcIkNvbXBsZXRlXCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlN0YXR1c1wiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5TdGF0dXNGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN0YXR1c0ZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENoZWNrYm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgVGlja2V0VHlwZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyB0aWNrZXRfdHlwZXMgfSxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9USUNLRVRfVFlQRTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gZmlsdGVyVmFsdWVzPy5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgID8gZmlsdGVyVmFsdWVzLmZpbHRlcigoZikgPT4gZiAhPT0gdmFsdWUpXG4gICAgICA6IFsuLi5maWx0ZXJWYWx1ZXMsIHZhbHVlXTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiVGlja2V0IFR5cGVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge3RpY2tldF90eXBlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8Qm94IHN4PXt7IHB5OiAxIH19IGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YmYubmFtZX19YH0+XG4gICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IGhhbmRsZUZpbHRlckNoYW5nZShiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2ZpbHRlclZhbHVlcy5pbmNsdWRlcyhiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZGM1wiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblRpY2tldFR5cGVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFR5cGVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcIi4vRmlsdGVyXCI7XG5pbXBvcnQgU29ydCBmcm9tIFwiLi9Tb3J0XCI7XG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL1NlYXJjaFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBGaWx0ZXJzID0gKHsgb25GaWx0ZXIsIG9uU29ydCwgb25TZWFyY2gsIG9uUmVzZXQgfSkgPT4gKFxuICA8R3JpZCBjb250YWluZXIganVzdGlmeT1cImZsZXgtZW5kXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgIDxHcmlkXG4gICAgICBpdGVtXG4gICAgICB4cz17Nn1cbiAgICAgIGNvbnRhaW5lclxuICAgICAgcGFkZGluZz17MX1cbiAgICAgIGdhcD17Mn1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlclNvcnRDb250YWluZXJ9XG4gICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICA+XG4gICAgICA8R3JpZCBpdGVtPlxuICAgICAgICA8RmlsdGVyIG9uRmlsdGVyPXtvbkZpbHRlcn0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxTb3J0IG9uU29ydD17b25Tb3J0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgICA8R3JpZCBpdGVtIHhzPXs2fSBjb250YWluZXIganVzdGlmeUNvbnRlbnQ9XCJmbGV4LWVuZFwiPlxuICAgICAgPFNlYXJjaCBvblNlYXJjaD17b25TZWFyY2h9IC8+XG4gICAgPC9HcmlkPlxuICA8L0dyaWQ+XG4pO1xuXG5GaWx0ZXJzLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEZvcm1Gb290ZXIgPSAoeyBzYXZlTGFiZWwsIGNhbmNlbExhYmVsLCBvbkNsb3NlLCBkaXNhYmxlZCB9KSA9PiAoXG4gIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZm9vdGVyfT5cbiAgICA8QnV0dG9uXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdG59XG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgID5cbiAgICAgIHtjYW5jZWxMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgICA8QnV0dG9uXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnNhdmVCdG59XG4gICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgID5cbiAgICAgIHtzYXZlTGFiZWx9XG4gICAgPC9CdXR0b24+XG4gIDwvQm94PlxuKTtcblxuRm9ybUZvb3Rlci5wcm9wVHlwZXMgPSB7XG4gIHNhdmVMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2FuY2VsTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZvcm1Gb290ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgRXJyb3JJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEVycm9yTGFiZWwoeyBtZXNzYWdlLCBjb2xvciwgY2xhc3NOYW1lcywgZGF0YVRlc3RJZCB9KSB7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmVycm9yTGFiZWx9ICR7Y2xhc3NOYW1lcyAmJiBjbGFzc05hbWVzfWB9XG4gICAgICBzdHlsZT17eyBjb2xvciB9fVxuICAgICAgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9XG4gICAgPlxuICAgICAgPEVycm9ySWNvbiBzeD17eyBjb2xvciB9fSAvPlxuICAgICAge21lc3NhZ2V9XG4gICAgPC9zcGFuPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBFcnJvckxhYmVsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQmFja2Ryb3AsIENpcmN1bGFyUHJvZ3Jlc3MgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5jb25zdCBMb2FkZXIgPSAoeyBvcGVuIH0pID0+IChcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgPEJhY2tkcm9wIG9wZW49e29wZW59IHN4PXsodGhlbWUpID0+ICh7IHpJbmRleDogdGhlbWUuekluZGV4LmRyYXdlciArIDEgfSl9PlxuICAgIDxDaXJjdWxhclByb2dyZXNzIGNvbG9yPVwiaW5oZXJpdFwiIC8+XG4gIDwvQmFja2Ryb3A+XG4pO1xuXG5Mb2FkZXIucHJvcFR5cGVzID0ge1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTG9hZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgT3JkZXJzTGlzdCBmcm9tIFwiLi4vT3JkZXJzTGlzdFwiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoeyBmZXRjaERhdGEgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgc3VtbWl0LCBtZW1iZXJPcmRlcnMsIG9yZGVyc19jdXJyZW50X3BhZ2UsIG9yZGVyc19sYXN0X3BhZ2UgfSA9XG4gICAgdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgaWQ9XCJpbmZpbml0ZVdyYXBwZXJcIiBjbGFzc05hbWU9e3N0eWxlcy5teU9yZGVyc1dyYXBwZXJ9PlxuICAgICAge1wiIFwifVxuICAgICAge21lbWJlck9yZGVycz8ubGVuZ3RoID8gKFxuICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICBkYXRhTGVuZ3RoPXttZW1iZXJPcmRlcnM/Lmxlbmd0aH1cbiAgICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEob3JkZXJzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICAgIGhhc01vcmU9e29yZGVyc19jdXJyZW50X3BhZ2UgPCBvcmRlcnNfbGFzdF9wYWdlfVxuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgPlxuICAgICAgICAgIHttZW1iZXJPcmRlcnM/Lm1hcCgob3JkZXIpID0+IChcbiAgICAgICAgICAgIDxPcmRlcnNMaXN0XG4gICAgICAgICAgICAgIGtleT17b3JkZXIubnVtYmVyICsgb3JkZXIuaWR9XG4gICAgICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ZvdW5kfT5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm5vT3JkZXJzSWNvbldyYXBwZXJ9PlxuICAgICAgICAgICAgPFNlYXJjaEljb24gc3g9e3sgZm9udFNpemU6IDQ0LCBjb2xvcjogXCIjMDAwMDAwOEZcIiB9fSAvPlxuICAgICAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOCxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOEZcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7dChcIm9yZGVycy5ub19vcmRlcnNcIil9XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzVGlja2V0cztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRGl2aWRlciBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVPcmRlclRvdGFscywgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5VGFibGUgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGRpc2NvdW50VG90YWwsIHJlZnVuZFRvdGFsLCB0YXhlc1RvdGFsLCBhbW91bnRUb3RhbCwgdGlja2V0U3VtbWFyeSB9ID1cbiAgICBjYWxjdWxhdGVPcmRlclRvdGFscyh7IG9yZGVyLCBzdW1taXQgfSk7XG4gIGNvbnN0IGh1bmRyZWQgPSAxMDA7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVRhYmxlfT5cbiAgICAgIHt0aWNrZXRTdW1tYXJ5Py5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dGlja2V0U3VtbWFyeS5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGlja2V0VG90YWwgPVxuICAgICAgICAgICAgICAodGlja2V0LnF0eSAqICh0aWNrZXQudGlja2V0X3R5cGUuY29zdCAqIGh1bmRyZWQpKSAvIGh1bmRyZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAga2V5PXtgdGl4b3JkZXJfJHt0aWNrZXQudGlja2V0X3R5cGUuY3JlYXRlZH1gfVxuICAgICAgICAgICAgICAgIHN4PXt7IHBiOiAxIH19XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWl0ZW1pemVkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHh7dGlja2V0LnF0eX0ge3RpY2tldC50aWNrZXRfdHlwZS5uYW1lfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0VG90YWwsIHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH0pfVxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge29yZGVyLmRpc2NvdW50X2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuZGlzY291bnRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Rpc2NvdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge29yZGVyLnRheGVzX2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudGF4ZXNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHt0YXhlc1RvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmFtb3VudF9wYWlkXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Ftb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtyZWZ1bmRUb3RhbCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3JlZnVuZFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiID8gXCIkMC4wMFwiIDogYW1vdW50VG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRFbWFpbFN1cHBvcnQgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldHMsXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2ssXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgaXNJblJlZnVuZGFibGVQZXJpb2QgPVxuICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUgPiBub3c7XG4gIGNvbnN0IGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0ID0gdGlja2V0c1JlZnVuZGFibGUodGlja2V0cyk7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9ICEhKGlzSW5SZWZ1bmRhYmxlUGVyaW9kICYmIGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0KTtcbiAgY29uc3QgaGFzUmVmdW5kUmVxdWVzdHMgPSB0aWNrZXRzPy5zb21lKCh0KSA9PiB0LnJlZnVuZF9yZXF1ZXN0cy5sZW5ndGggPiAwKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2lzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHJlcXVlc3QgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259IFxuICAgICAgICAgICR7c3VibWl0UmVxdWVzdCA/IHN0eWxlcy5yZWZ1bmREaXNhYmxlZCA6IFwiXCJ9YH1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBkaXNhYmxlZD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAge2hhc1JlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgZGV0YWlscyBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwiZW1haWwgc3VwcG9ydCBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvbkVtYWlsU3VwcG9ydENsaWNrfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX2luZm8uZW1haWxfc3VwcG9ydFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvPlxuICApO1xufTtcblxuUmVmdW5kRW1haWxTdXBwb3J0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRW1haWxTdXBwb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBPcmRlclN1bW1hcnlUYWJsZSBmcm9tIFwiLi9PcmRlclN1bW1hcnlUYWJsZVwiO1xuaW1wb3J0IFJlZnVuZEVtYWlsU3VwcG9ydCBmcm9tIFwiLi9SZWZ1bmRFbWFpbFN1cHBvcnRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5ID0gKHtcbiAgb3JkZXIsXG4gIHN1bW1pdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmREZXRhaWxDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn1cbiAgICAgICAgc3g9e3sgcHQ6IDQsIHB4OiA0IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGUgb3JkZXI9e29yZGVyfSBzdW1taXQ9e3N1bW1pdH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCB4cz17MTJ9IHN4PXt7IHBiOiAzIH19PlxuICAgICAgICA8UmVmdW5kRW1haWxTdXBwb3J0XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICAgICAgb25FbWFpbFN1cHBvcnRDbGljaz17KCkgPT4ge319XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcbn07XG5PcmRlclN1bW1hcnkucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFNlYXJjaEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25Ub01lID0gKHsgZmV0Y2hEYXRhIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UsXG4gICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9PlxuICAgICAgPGRpdiBpZD1cImFzc2lnbmVkVG9NZVdyYXBwZXJcIiBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZFRvTWVXcmFwcGVyfT5cbiAgICAgICAge3VzZXJUaWNrZXRzPy5sZW5ndGggPyAoXG4gICAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgICBkYXRhTGVuZ3RoPXt1c2VyVGlja2V0cz8ubGVuZ3RofVxuICAgICAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgICAgIGhhc01vcmU9e3VzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UgPCB1c2VyX3RpY2tldHNfbGFzdF9wYWdlfVxuICAgICAgICAgICAgc2Nyb2xsVGhyZXNob2xkPXsxfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn0+XG4gICAgICAgICAgICAgIHt1c2VyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICBpc1JlZnVuZE1vZGFsPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17W119XG4gICAgICAgICAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvSW5maW5pdGVTY3JvbGw+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub1RpY2tldHNGb3VuZH0+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm5vT3JkZXJzSWNvbldyYXBwZXJ9PlxuICAgICAgICAgICAgICA8U2VhcmNoSWNvbiBzeD17eyBmb250U2l6ZTogNDQsIGNvbG9yOiBcIiMwMDAwMDA4RlwiIH19IC8+XG4gICAgICAgICAgICAgIDxDbG9zZUljb25cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgZm9udFNpemU6IDE4LFxuICAgICAgICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgICAgICAgY29sb3I6IFwiIzAwMDAwMDhGXCJcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICB7dChcInRpY2tldHMubm9fdGlja2V0c1wiKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduVG9NZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgR3JpZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnbmVkVG8gPSAoeyBlbWFpbCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfdG9cIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtYXNzaWduZWRcIj5cbiAgICAgICAge2VtYWlsfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgRXh0ZXJuYWxBc3NpZ25lZFRvID0gKHsgZmlyc3ROYW1lLCBsYXN0TmFtZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfYnlcIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCI+XG4gICAgICAgIHtmaXJzdE5hbWV9IHtsYXN0TmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IE1hbmFnZUZvciA9ICh7IGZpcnN0TmFtZSwgbGFzdE5hbWUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLm1hbmFnZV9mb3JcIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCI+XG4gICAgICAgIHtmaXJzdE5hbWV9IHtsYXN0TmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IEF0dGVuZGVlU3RhdHVzID0gKHsgdGlja2V0LCBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9ICF0aWNrZXQub3duZXI/LmVtYWlsICYmIHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IGlzRGVsZWdhdGVkID0gISF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWQ7XG5cbiAgaWYgKGlzVW5hc3NpZ25lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy11bmFzc2lnbmVkXCJcbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmF0dGVuZGVlX3N0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICk7XG4gIH1cblxuICBpZiAodGlja2V0Lm93bmVyPy5lbWFpbCkge1xuICAgIHJldHVybiAoXG4gICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPEFzc2lnbmVkVG8gZW1haWw9e3RpY2tldC5vd25lci5lbWFpbH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICB7aXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0ICYmIChcbiAgICAgICAgICA8R3JpZCBpdGVtIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkQnlUZXh0fT5cbiAgICAgICAgICAgIDxFeHRlcm5hbEFzc2lnbmVkVG9cbiAgICAgICAgICAgICAgZmlyc3ROYW1lPXt0aWNrZXQub3JkZXI/Lm93bmVyX2ZpcnN0X25hbWV9XG4gICAgICAgICAgICAgIGxhc3ROYW1lPXt0aWNrZXQub3JkZXI/Lm93bmVyX2xhc3RfbmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgICB7aXNEZWxlZ2F0ZWQgJiYgKFxuICAgICAgICAgIDxHcmlkIGl0ZW0gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRCeVRleHR9PlxuICAgICAgICAgICAgPE1hbmFnZUZvclxuICAgICAgICAgICAgICBmaXJzdE5hbWU9e3RpY2tldC5vd25lcj8uZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgbGFzdE5hbWU9e3RpY2tldC5vd25lcj8ubGFzdF9uYW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICA8L0dyaWQ+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuQXR0ZW5kZWVTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF0dGVuZGVlU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlckxpc3RJdGVtID0gKHtcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgb25QYWdpbmF0ZUNsaWNrLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2l0ZW1zVG9EaXNwbGF5LCBzZXRJdGVtc1RvRGlzcGxheV0gPSB1c2VTdGF0ZShcbiAgICBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlRcbiAgKTtcblxuICBpZiAoIW9yZGVyPy5tZW1iZXJUaWNrZXRzPy5sZW5ndGgpIHJldHVybiBudWxsO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LnNsaWNlKDAsIGl0ZW1zVG9EaXNwbGF5KTtcblxuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmIChvcmRlcj8udGlja2V0c190b3RhbCA+IG9yZGVyPy5tZW1iZXJUaWNrZXRzLmxlbmd0aCkge1xuICAgICAgb25QYWdpbmF0ZUNsaWNrKCk7XG4gICAgfVxuICAgIHNldEl0ZW1zVG9EaXNwbGF5KGl0ZW1zVG9EaXNwbGF5ICsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcbiAgfTtcblxuICBjb25zdCBvblZpZXdMZXNzID0gKCkgPT4gc2V0SXRlbXNUb0Rpc3BsYXkoUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBpc1JlZnVuZE1vZGFsPXtmYWxzZX1cbiAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9eyEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZCl9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgICB7b3JkZXI/LnRpY2tldHNfdG90YWwgPiBpdGVtc1RvRGlzcGxheSA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IG1vcmUgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdNb3JlfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X21vcmVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5sZW5ndGggPiBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgJiZcbiAgICAgIHNsaWNlZFRpY2tldHM/Lmxlbmd0aCA9PT0gb3JkZXI/LnRpY2tldHNfdG90YWwgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwidmlldyBsZXNzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17b25WaWV3TGVzc31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19sZXNzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlckxpc3RJdGVtLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0SXRlbTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQnV0dG9uLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCB7IGdldFN1bW1pdFJlYXNzaWduRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4vQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBUaWNrZXREZXRhaWwgZnJvbSBcIi4uL1RpY2tldERldGFpbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgVGlja2V0QXNzaWduIGZyb20gXCIuLi9UaWNrZXRBc3NpZ25cIjtcbmltcG9ydCB7IHJlc2V0VGlja2V0IH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgbW9kYWxWaWV3cyA9IHtcbiAgZGV0YWlsOiBcIkRFVEFJTFwiLFxuICByZWFzc2lnbjogXCJSRUFTU0lHTlwiLFxuICBhc3NpZ246IFwiQVNTSUdOXCJcbn07XG5cbmNvbnN0IFRpY2tldENUQXMgPSAoe1xuICBpc0luY29tcGxldGUsXG4gIGlzVW5hc3NpZ25lZCxcbiAgaXNSZWFzc2lnbmFibGUsXG4gIG9uT3BlbkNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBpZiAoaXNVbmFzc2lnbmVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmFzc2lnbil9XG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25fdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0YWNrXG4gICAgICBzeD17e1xuICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJlbmRcIixcbiAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICB9fVxuICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgID5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld0ZpbmlzaFRpY2tldEJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5kZXRhaWwpfVxuICAgICAgPlxuICAgICAgICB7aXNJbmNvbXBsZXRlXG4gICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5maW5pc2hfdGlja2V0XCIpXG4gICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAge2lzUmVhc3NpZ25hYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWFzc2lnbiB0aWNrZXQgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWFzc2lnbkJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLnJlYXNzaWduKX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5yZWFzc2lnbl90aWNrZXRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L1N0YWNrPlxuICApO1xufTtcblxuVGlja2V0Q1RBcy5wcm9wVHlwZXMgPSB7XG4gIGlzSW5jb21wbGV0ZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgaXNVbmFzc2lnbmVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1JlYXNzaWduYWJsZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgb25PcGVuQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmNvbnN0IE9yZGVyTGlzdFRpY2tldHMgPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgaXNSZWZ1bmRNb2RhbCxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZCxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgeyBpc1JlZnVuZGFibGUsIGlzVW5hc3NpZ25lZCwgaXNJbmNvbXBsZXRlLCBjYW5SZWFzc2lnbiB9ID1cbiAgICB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG4gIGNvbnN0IFttb2RhbE9wZW4sIHNldE1vZGFsT3Blbl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IG9uUmVhc3NpZ25hYmxlUGVyaW9kID0gcmVhc3NpZ25EYXRlID4gbm93O1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9XG4gICAgb25SZWFzc2lnbmFibGVQZXJpb2QgJiYgY2FuUmVhc3NpZ24gJiYgIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDtcblxuICBjb25zdCBoYW5kbGVDbG9zZU1vZGFsID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0VGlja2V0KCkpO1xuICAgIHNldE1vZGFsT3BlbihudWxsKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVPcGVuTW9kYWwgPSAodmlldykgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0VGlja2V0KCkpO1xuICAgIHNldE1vZGFsT3Blbih2aWV3KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJXcmFwcGVyfSAke1xuICAgICAgICBpc1JlZnVuZE1vZGFsID8gc3R5bGVzLnJlZnVuZE1vZGFsIDogXCJcIlxuICAgICAgfSAke2lzUmVmdW5kTW9kYWwgJiYgIWlzUmVmdW5kYWJsZSA/IHN0eWxlcy5kaXNhYmxlZFJlZnVuZCA6IFwiXCJ9ICR7XG4gICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZCA/IHN0eWxlcy5zZWxlY3RlZCA6IFwiXCJcbiAgICAgIH1gfVxuICAgID5cbiAgICAgIHtpc1JlZnVuZE1vZGFsICYmIChcbiAgICAgICAgPEdyaWQgaXRlbSB4cz17MX0gcGFkZGluZz17Mn0gY2xhc3NOYW1lPXtzdHlsZXMuY2hlY2tib3h9PlxuICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCB0aWNrZXQgY2hlY2tib3hcIlxuICAgICAgICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIGNoZWNrZWQ9e2lzU2VsZWN0ZWRUb1JlZnVuZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2VsZWN0VG9SZWZ1bmQoZSwgdGlja2V0KX1cbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHtcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogMThcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGRpc2FibGVkPXshaXNSZWZ1bmRhYmxlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8R3JpZFxuICAgICAgICBpdGVtXG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLWxpc3QtdGlja2V0XCJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgIHhzPXtpc1JlZnVuZE1vZGFsID8gMTEgOiAxMn1cbiAgICAgID5cbiAgICAgICAgPEdyaWRcbiAgICAgICAgICB4cz17OH1cbiAgICAgICAgICBweT17Mn1cbiAgICAgICAgICBwbD17NH1cbiAgICAgICAgICBpdGVtXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0VGlja2V0VHlwZX1cbiAgICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgID5cbiAgICAgICAgICA8U3RhY2tcbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcImZsZXgtc3RhcnRcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZVdyYXBwZXJ9IHhzPXs0fSBweT17Mn0gcHI9ezR9IGl0ZW0+XG4gICAgICAgICAgey8qIFRvIGFkZCBiYWRnZSBmZWF0dXJlcyAqL31cbiAgICAgICAgICB7dGlja2V0LmJhZGdlPy5mZWF0dXJlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZX1cbiAgICAgICAgICAgICAgc3JjPXtiZi5pbWFnZX1cbiAgICAgICAgICAgICAgYWx0PXtiZi5uYW1lfVxuICAgICAgICAgICAgICBrZXk9e2JmLm5hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXsxMn0gc3g9e3sgcHg6IDQsIHBiOiAyIH19IGl0ZW0+XG4gICAgICAgICAgPEF0dGVuZGVlU3RhdHVzXG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldD17ISFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgICAgdGV4dD17dGlja2V0Lm51bWJlcn1cbiAgICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJ0aWNrZXRfc3RhdHVzLmNvcHlfdGlja2V0X251bWJlclwiKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxCb3ggc3g9e3sgZGlzcGxheTogXCJmbGV4XCIsIGZsZXhXcmFwOiBcIndyYXBcIiwgd2lkdGg6IFwiMTAwJVwiIH19PlxuICAgICAgICAgIDxCb3ggc3g9e3sgbWluV2lkdGg6IFwiMzAwcHhcIiB9fT5cbiAgICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBY3Rpb25CdXR0b25zfT5cbiAgICAgICAgICAgIHt0aWNrZXQuaXNfYWN0aXZlICYmICFpc1JlZnVuZE1vZGFsICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldENUQXNcbiAgICAgICAgICAgICAgICBpc1VuYXNzaWduZWQ9e2lzVW5hc3NpZ25lZH1cbiAgICAgICAgICAgICAgICBpc0luY29tcGxldGU9e2lzSW5jb21wbGV0ZX1cbiAgICAgICAgICAgICAgICBpc1JlYXNzaWduYWJsZT17aXNSZWFzc2lnbmFibGUgJiYgIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgICAgICAgICBvbk9wZW5DbGljaz17aGFuZGxlT3Blbk1vZGFsfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxUaWNrZXREZXRhaWxcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgIG9wZW49e21vZGFsT3BlbiA9PT0gbW9kYWxWaWV3cy5kZXRhaWx9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgLz5cbiAgICAgICAgPFRpY2tldEFzc2lnblxuICAgICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWQgfHwgdGlja2V0Py5vcmRlcj8uaWR9XG4gICAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgICAgb3Blbj17W21vZGFsVmlld3MucmVhc3NpZ24sIG1vZGFsVmlld3MuYXNzaWduXS5pbmNsdWRlcyhtb2RhbE9wZW4pfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuT3JkZXJMaXN0VGlja2V0cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvcmRlcl9pZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdG90YWxfcmVmdW5kZWRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRpY2tldF90eXBlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgaXNSZWZ1bmRNb2RhbDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzU2VsZWN0ZWRUb1JlZnVuZDogUHJvcFR5cGVzLmJvb2wsXG4gIHNlbGVjdFRvUmVmdW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0VGlja2V0cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBUYWJzIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYnNcIjtcbmltcG9ydCBUYWIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFiXCI7XG5pbXBvcnQgT3JkZXJMaXN0SXRlbSBmcm9tIFwiLi9PcmRlckxpc3RJdGVtXCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5IGZyb20gXCIuLi9PcmRlclN1bW1hcnlcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0c01vZGFsIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0c1wiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgUmVmdW5kRGV0YWlscyBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHMvUmVmdW5kRGV0YWlsc1wiO1xuXG5jb25zdCBUYWJQYW5lbCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCB2YWx1ZSwgaW5kZXggfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgICBoaWRkZW49e3ZhbHVlICE9PSBpbmRleH1cbiAgICAgIGlkPXtgdGFicGFuZWwtJHtpbmRleH1gfVxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgdGFiLSR7aW5kZXh9YH1cbiAgICA+XG4gICAgICB7dmFsdWUgPT09IGluZGV4ICYmIGNoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgPSAoe1xuICBpc01vYmlsZSxcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgZGV0YWlsc1JlcXVpcmVkLFxuICBvblBhZ2luYXRlQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoXywgbmV3VmFsdWUpID0+IHtcbiAgICBzZXRWYWx1ZShuZXdWYWx1ZSk7XG4gIH07XG4gIGNvbnN0IFt0aWNrZXRzVG9SZWZ1bmQsIHNldFRpY2tldHNUb1JlZnVuZF0gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFtzdWJtaXRSZXF1ZXN0LCBzZXRTdWJtaXRSZXF1ZXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3JlZnVuZERldGFpbHNPcGVuLCBzZXRSZWZ1bmREZXRhaWxzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3Qgb25SZWZ1bmRDbGljayA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KHRydWUpO1xuICB9O1xuICBjb25zdCB1bnNlbGVjdFJlZnVuZFRpY2tldHMgPSAodGlja2V0KSA9PiB7XG4gICAgY29uc3QgZmlsdGVyU2VsZWN0ZWQgPSB0aWNrZXRzVG9SZWZ1bmQuZmlsdGVyKCh0KSA9PiB0LmlkICE9PSB0aWNrZXQuaWQpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChmaWx0ZXJTZWxlY3RlZCk7XG4gIH07XG4gIGNvbnN0IHNlbGVjdFRvUmVmdW5kID0gKGUsIHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHsgY2hlY2tlZCB9ID0gZS50YXJnZXQ7XG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGlja2V0ID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgICAgICh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWRcbiAgICAgICk7XG4gICAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoWy4uLnRpY2tldHNUb1JlZnVuZCwgc2VsZWN0ZWRUaWNrZXRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzKHRpY2tldCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNsb3NlU3VibWl0UmVxdWVzdCA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCBtb3JlRGV0YWlscyA9ICgpID0+XG4gICAgZGV0YWlsc1JlcXVpcmVkICYmIChcbiAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgIG1lc3NhZ2U9e3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19kZXRhaWxzX3JlcXVpcmVkXCIpfVxuICAgICAgICBjb2xvcj1cIiNmZjk4MDBcIlxuICAgICAgICBkYXRhVGVzdElkPVwibW9yZS1kZXRhaWxzLWxhYmVsXCJcbiAgICAgIC8+XG4gICAgKTtcblxuICByZXR1cm4gaXNNb2JpbGUgPyAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgIGRhdGEtdGVzdGlkPVwibW9iaWxlLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEJveCBzeD17eyBib3JkZXJDb2xvcjogXCJkaXZpZGVyXCIsIHBiOiAyIH19PlxuICAgICAgICA8VGFic1xuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJUaWNrZXRzICYgU3VtbWFyeVwiXG4gICAgICAgID5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnRpY2tldHNcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5zdW1tYXJ5XCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICA8L1RhYnM+XG4gICAgICA8L0JveD5cbiAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezB9PlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICA8L0JveD5cbiAgKSA6IChcbiAgICA8PlxuICAgICAgPEdyaWQgaXRlbSBtZD17MTJ9PlxuICAgICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkXG4gICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgIGl0ZW1cbiAgICAgICAgbWQ9ezd9XG4gICAgICAgIG9yZGVyPXt7IG1kOiAxIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiZGVza3RvcC1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHBhZGRpbmc9ezF9IGl0ZW0gbWQ9ezV9IG9yZGVyPXt7IG1kOiAxIH19PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3Blbih0cnVlKX1cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxSZWZ1bmRSZXF1ZXN0c01vZGFsXG4gICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzIHx8IFtdfVxuICAgICAgICBvcGVuPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZT17KCkgPT4gcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcygpfVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBjbG9zZVN1Ym1pdFJlcXVlc3QoKX1cbiAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAvPlxuICAgICAgPFJlZnVuZERldGFpbHNcbiAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgIGN1cnJlbmN5PXtvcmRlci5jdXJyZW5jeX1cbiAgICAgICAgb3Blbj17cmVmdW5kRGV0YWlsc09wZW59XG4gICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKGZhbHNlKX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVtYmVyVGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KSxcbiAgaXNNb2JpbGU6IFByb3BUeXBlcy5ib29sLFxuICBkZXRhaWxzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvblBhZ2luYXRlQ2xpY2s6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCI7XG5pbXBvcnQgeyBnZXRUaWNrZXRzQnlPcmRlciB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBnZXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIGZyb20gXCIuL09yZGVyc0xpc3REZXNrdG9wTW9iaWxlXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyc0xpc3QgPSAoeyBzdW1taXQsIG9yZGVyIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHsgdGlja2V0X3Blcl9wYWdlLCBmaWx0ZXIsIHNvcnQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG4gIGNvbnN0IFtpc01vYmlsZVZpZXdhYmxlLCBzZXRNb2JpbGVWaWV3YWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGRldGFpbHNSZXF1aXJlZCA9IG9yZGVyLm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgKHRpY2tldCkgPT4gdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiXG4gICk7XG5cbiAgY29uc3Qgb25QYWdpbmF0ZUNsaWNrID0gKCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgIHBhZ2U6IG9yZGVyLnRpY2tldHNfcGFnZV9jdXJyZW50ICsgT05FX1BBR0VfTkVYVCxcbiAgICAgICAgcGVyUGFnZTogdGlja2V0X3Blcl9wYWdlLFxuICAgICAgICBmaWx0ZXIsXG4gICAgICAgIHNvcnRcbiAgICAgIH0pXG4gICAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogMSxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm9Db250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItdGlja2V0LWluZm8tY29udGFpbmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLnB1cmNoYXNlZFwiKX06IHtnZXRGb3JtYXR0ZWREYXRlKG9yZGVyLmNyZWF0ZWQpfSB8e1wiIFwifVxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17b3JkZXIubnVtYmVyfVxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAge2lzTW9iaWxlICYmIChcbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBzeD17eyBwYWRkaW5nOiBcIjVweCAxMHB4XCIgfX1cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE1vYmlsZVZpZXdhYmxlKCFpc01vYmlsZVZpZXdhYmxlKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aXNNb2JpbGVWaWV3YWJsZVxuICAgICAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmhpZGVfdGlja2V0c1wiKVxuICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0c1wiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEdyaWRcbiAgICAgICAga2V5PXtvcmRlci5pZH1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIHJvd1NwYWNpbmc9ezF9XG4gICAgICAgIGNvbHVtblNwYWNpbmc9e3sgeHM6IDEsIHNtOiAyLCBtZDogMyB9fVxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclRpY2tldENvbnRhaW5lcn0gJHtcbiAgICAgICAgICBpc01vYmlsZSAmJiAhaXNNb2JpbGVWaWV3YWJsZSA/IHN0eWxlcy5kaXNwbGF5X25vbmUgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgICBzeD17e1xuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IHtcbiAgICAgICAgICAgIG1kOiBcInJvd1wiLFxuICAgICAgICAgICAgbGc6IFwicm93XCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDQsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlXG4gICAgICAgICAgaXNNb2JpbGU9e2lzTW9iaWxlfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBkZXRhaWxzUmVxdWlyZWQ9eyEhZGV0YWlsc1JlcXVpcmVkfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3Q7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5pbXBvcnQgeyBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IFJlZnVuZERldGFpbHMgPSAoeyB0aWNrZXRzLCBjdXJyZW5jeSwgb3Blbiwgb25DbG9zZVNsaWRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgcmVxdWVzdGVkVGlja2V0cyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyh0aWNrZXRzKSxcbiAgICBbdGlja2V0c11cbiAgKTtcbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9XCJyZWZ1bmQtZGV0YWlsc1wiXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17Y2xvc2VTbGlkZXJ9XG4gICAgICB0aXRsZT17dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kX2RldGFpbHNcIil9XG4gICAgPlxuICAgICAgPEJveFxuICAgICAgICBzeD17e1xuICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IFwiY29sdW1uXCIsXG4gICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgICAgICBwYWRkaW5nOiBcIjAgNXJlbVwiXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXF1ZXN0ZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17YHJlZnVuZF9yZXFfJHt0aWNrZXQ/LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIGN1cnJlbmN5PXtjdXJyZW5jeX1cbiAgICAgICAgICAgIHJlZnVuZERldGFpbHNcbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgIDwvUmlnaHREcmF3ZXI+XG4gICk7XG59O1xuXG5SZWZ1bmREZXRhaWxzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2VTbGlkZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmREZXRhaWxzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgSWNvbkJ1dHRvbiwgVG9vbHRpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB0b29sdGlwQ2xhc3NlcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IEluZm9JY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4uL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBSZWZ1bmRTdGF0dXMgZnJvbSBcIi4vUmVmdW5kU3RhdHVzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBUaWNrZXRTdGF0dXMgZnJvbSBcIi4uL1RpY2tldFN0YXR1c1wiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuY29uc3QgUmVmdW5kUmVxdWVzdGVkVGlja2V0ID0gKHsgdGlja2V0LCBjdXJyZW5jeSwgcmVmdW5kRGV0YWlscyB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBHUklEXzggPSA4O1xuICBjb25zdCBHUklEXzEyID0gMTI7XG5cbiAgY29uc3QgUEFERElOR18yID0gMjtcblxuICBjb25zdCBhcHByb3ZlZFJlZnVuZHMgPSB0aWNrZXQucmVmdW5kX3JlcXVlc3RzLmZpbHRlcihcbiAgICAocmVmdW5kKSA9PiByZWZ1bmQuc3RhdHVzID09PSBcIkFwcHJvdmVkXCJcbiAgKTtcblxuICBjb25zdCByZWZ1bmRlZFRheGVzU3VtbWF0b3J5ID0ge307XG5cbiAgYXBwcm92ZWRSZWZ1bmRzLmZvckVhY2goKHJlZnVuZCkgPT4ge1xuICAgIHJlZnVuZC5yZWZ1bmRlZF90YXhlcy5mb3JFYWNoKChydCkgPT4ge1xuICAgICAgY29uc3QgdGF4SWQgPSBydC50YXguaWQ7XG4gICAgICBpZiAoIXJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdKSB7XG4gICAgICAgIHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdID0ge1xuICAgICAgICAgIG5hbWU6IHJ0LnRheC5uYW1lLFxuICAgICAgICAgIHRvdGFsUmVmdW5kZWRUYXhBbW91bnQ6IDBcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdLnRvdGFsUmVmdW5kZWRUYXhBbW91bnQgKz1cbiAgICAgICAgcnQucmVmdW5kZWRfYW1vdW50O1xuICAgIH0pO1xuICB9KTtcblxuICBjb25zdCBIdG1sVG9vbHRpcCA9IHN0eWxlZCgoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0pID0+IChcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICA8VG9vbHRpcCB7Li4ucHJvcHN9IGNsYXNzZXM9e3sgcG9wcGVyOiBjbGFzc05hbWUgfX0gLz5cbiAgKSkoKCkgPT4gKHtcbiAgICBbYCYgLiR7dG9vbHRpcENsYXNzZXMudG9vbHRpcH1gXToge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiNmNWY1ZjlcIixcbiAgICAgIGNvbG9yOiBcInJnYmEoMCwgMCwgMCwgMC44NylcIixcbiAgICAgIG1heFdpZHRoOiAyMjAsXG4gICAgICBmb250U2l6ZTogXCIxZW1cIixcbiAgICAgIGJvcmRlcjogXCIxcHggc29saWQgI2RhZGRlOVwiXG4gICAgfVxuICB9KSk7XG5cbiAgcmV0dXJuIChcbiAgICA8R3JpZFxuICAgICAgY29udGFpbmVyXG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5yZWZ1bmRUaWNrZXRCb3hDb250YWluZXJ9ICR7XG4gICAgICAgIHJlZnVuZERldGFpbHMgPyBzdHlsZXMucmVmdW5kRGV0YWlsIDogXCJcIlxuICAgICAgfSBgfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdGVkLXRpY2tldC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxHcmlkXG4gICAgICAgIHhzPXtyZWZ1bmREZXRhaWxzID8gR1JJRF84IDogR1JJRF8xMn1cbiAgICAgICAgaXRlbVxuICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgIHB0PXsyfVxuICAgICAgICBweD17NH1cbiAgICAgID5cbiAgICAgICAgPFN0YWNrXG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcbiAgICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDxHcmlkIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZVdyYXBwZXJ9IHhzPXs0fSBpdGVtPlxuICAgICAgICAgICAge3RpY2tldC5iYWRnZT8uZmVhdHVyZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlfVxuICAgICAgICAgICAgICAgIHNyYz17YmYuaW1hZ2V9XG4gICAgICAgICAgICAgICAgYWx0PXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIGtleT17YmYubmFtZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIHtyZWZ1bmREZXRhaWxzICYmIChcbiAgICAgICAgPEdyaWQgeHM9ezR9IHBhZGRpbmc9ezJ9IGl0ZW0+XG4gICAgICAgICAgPFJlZnVuZFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkIHhzPXsxMn0gaXRlbSBweD17NH0gcGI9e3JlZnVuZERldGFpbHMgPyBQQURESU5HXzIgOiAwfSBjb250YWluZXI+XG4gICAgICAgIDxHcmlkIHhzPXs4fSBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRUaWNrZXRBdHRlbmRlZX0+XG4gICAgICAgICAgPEF0dGVuZGVlU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OiA8Q29weVRleHQgdGV4dD17dGlja2V0Lm51bWJlcn0gLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAge3JlZnVuZERldGFpbHMgJiYgdGlja2V0LnRvdGFsX3JlZnVuZGVkX2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBwbD17NH0+XG4gICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0LnRvdGFsX3JlZnVuZGVkX2Ftb3VudCwgeyBjdXJyZW5jeSB9KX17XCIgXCJ9XG4gICAgICAgICAgICBSZWZ1bmRlZFxuICAgICAgICAgICAge2FwcHJvdmVkUmVmdW5kcy5zb21lKChyKSA9PiByLnJlZnVuZGVkX3RheGVzLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgPEh0bWxUb29sdGlwXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldC5yZWZ1bmRlZF9hbW91bnQsIHsgY3VycmVuY3kgfSl9e1wiIFwifVxuICAgICAgICAgICAgICAgICAgICAgIFRpY2tldCBBbW91bnRcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8Yj5UYXhlczwvYj5cbiAgICAgICAgICAgICAgICAgICAge09iamVjdC5rZXlzKHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkpLm1hcCgodGF4SWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRvdGFsUmVmdW5kZWRUYXhBbW91bnQsIG5hbWUgfSA9XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXTtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPHAga2V5PXt0YXhJZH0+e2Ake25hbWV9IC0gJHtmb3JtYXRDdXJyZW5jeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjdXJyZW5jeSB9XG4gICAgICAgICAgICAgICAgICAgICAgICApfWB9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8SW5mb0ljb24gLz5cbiAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgIDwvSHRtbFRvb2x0aXA+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICB7bW9tZW50KFxuICAgICAgICAgICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzWzBdLmFjdGlvbl9kYXRlICogTUlMTElTRUNfVE9fU0VDXG4gICAgICAgICAgICApLmZvcm1hdChcIk1NTSBERCwgWVlZWVwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICA8L0dyaWQ+XG4gICAgICB7IXJlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCB4cz17MTJ9IHByPXs0fSBwYj17Mn0+XG4gICAgICAgICAgPEdyaWQgeHM9ezEyfSBpdGVtPlxuICAgICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuUmVmdW5kUmVxdWVzdGVkVGlja2V0LnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LFxuICByZWZ1bmREZXRhaWxzOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdGVkVGlja2V0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IENoaXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHN0YXR1c0NvbG9yID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvcih0aWNrZXQpLFxuICAgIFt0aWNrZXRdXG4gICk7XG4gIHJldHVybiAoXG4gICAgPENoaXBcbiAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgcmVmdW5kIHN0YXR1cyBsYWJlbFwiXG4gICAgICBsYWJlbD17dChgdGlja2V0X3N0YXR1cy5yZWZ1bmRfcmVxdWVzdF8ke3N0YXR1c0NvbG9yfWApfVxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXNbc3RhdHVzQ29sb3JdfWB9XG4gICAgLz5cbiAgKTtcbn07XG5cblJlZnVuZFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDaGVja0NpcmNsZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0IHsgcmVmdW5kQnVsa1RpY2tldHMsIHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgU1RFUF9PTkUsIFNURVBfVEhSRUUsIFNURVBfVFdPIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4uL09yZGVyc0xpc3QvT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcblxuY29uc3QgUmVmdW5kUmVxdWVzdHNNb2RhbCA9ICh7XG4gIHRpY2tldHMsXG4gIHN1bW1pdCxcbiAgb3BlbixcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UsXG4gIG9uQ2xvc2VTbGlkZXIsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmQsXG4gIHVuc2VsZWN0UmVmdW5kVGlja2V0c1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3N0ZXAsIHNldFN0ZXBdID0gdXNlU3RhdGUoU1RFUF9PTkUpO1xuICBjb25zdCBbZXJyb3JNc2csIHNldEVycm9yTXNnXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbcmVmdW5kU3VjY2Vzcywgc2V0UmVmdW5kU3VjY2Vzc10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICAgIGlmIChyZWZ1bmRTdWNjZXNzKSB7XG4gICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSgpOyAvLyBpZiB0aGUgcmVmdW5kIGlzIGEgc3VjY2VzcywgdHJpZ2dlciBhbmQgcmUtcmV0cmlldmUgdGlja2V0cyBieSBvcmRlclxuICAgICAgc2V0UmVmdW5kU3VjY2VzcyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNvbmZpcm1SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0U3RlcChTVEVQX1RXTyk7XG4gIH07XG5cbiAgY29uc3QgZ29CYWNrVG9SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kVGlja2V0cyA9IGFzeW5jICgpID0+IHtcbiAgICBkaXNwYXRjaChyZWZ1bmRCdWxrVGlja2V0cyh7IHRpY2tldHM6IHRpY2tldHNUb1JlZnVuZCB9KSkudGhlbigocmVzKSA9PiB7XG4gICAgICBkaXNwYXRjaCh1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkKHJlcykpOyAvLyByZXR1cm5pbmcgd2hpY2ggdGlja2V0cyB3ZXJlIHN1Y2Nlc3NmdWxcbiAgICAgIGlmIChyZXM/Lmxlbmd0aCA9PT0gdGlja2V0c1RvUmVmdW5kLmxlbmd0aCkge1xuICAgICAgICBzZXRTdGVwKFNURVBfVEhSRUUpOyAvLyBzdWNjZXNzLCBhbGwgcmVmdW5kcyB3ZXJlIHJlcXVlc3RlZFxuICAgICAgICBzZXRSZWZ1bmRTdWNjZXNzKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RXJyb3JNc2codChcImVycm9ycy5yZWZ1bmRfdW5zdWNjZXNzZnVsXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRTdGVwT25lID0gKCkgPT4gKFxuICAgIDw+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9zZWxlY3RfcmVmdW5kXCIpfVxuICAgICAgPC9oMj5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdH0+XG4gICAgICAgIHt0aWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICAgIGtleT17YHRpY2tldC0ke3RpY2tldC5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17XG4gICAgICAgICAgICAgICEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAgICAgaXNSZWZ1bmRNb2RhbFxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnN9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jYW5jZWwtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY2FuY2VsXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY29udGludWUtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjb25maXJtUmVmdW5kfVxuICAgICAgICAgIGRpc2FibGVkPXt0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoID09PSAwfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRpbnVlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBUd28gPSAoKSA9PiAoXG4gICAgPEJveCBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIj5cbiAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X2NvbmZpcm1fcmVmdW5kXCIpfVxuICAgICAgPC9oMz5cbiAgICAgIHtlcnJvck1zZyAmJiAoXG4gICAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgICAgY2xhc3NOYW1lcz17c3R5bGVzLnJlZnVuZEVycm9yTXNnfVxuICAgICAgICAgIGNvbG9yPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgZGF0YVRlc3RJZD1cImZhaWxlZC1yZWZ1bmQtbWVzc2FnZVwiXG4gICAgICAgICAgbWVzc2FnZT17ZXJyb3JNc2d9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0fT5cbiAgICAgICAge3RpY2tldHNUb1JlZnVuZC5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17YHJlZnVuZF9yZXFfJHt0aWNrZXQ/LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5DVEFCdXR0b25XcmFwcGVyfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtcmV0dXJuLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2dvQmFja1RvUmVmdW5kfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmJhY2tcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e3JlZnVuZFRpY2tldHN9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFRocmVlID0gKCkgPT4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFN1Y2Nlc3NmdWx9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIlxuICAgID5cbiAgICAgIDxDaGVja0NpcmNsZUljb24gc3g9e3sgY29sb3I6IFwiIzRjYWY1MFwiIH19IC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMVwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2cyfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMlwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1maW5pc2gtYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgID5cbiAgICAgICAge3QoXCJnZW5lcmFsLmZpbmlzaFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlbmRlclN0ZXBzID0gKCkgPT4ge1xuICAgIHN3aXRjaCAoc3RlcCkge1xuICAgICAgY2FzZSBTVEVQX09ORTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICAgIGNhc2UgU1RFUF9UV086XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVHdvKCk7XG4gICAgICBjYXNlIFNURVBfVEhSRUU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVGhyZWUoKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgIDxSaWdodERyYXdlclxuICAgICAgICBpZD1cInJlZnVuZC1yZXF1ZXN0c1wiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgICB0aXRsZT17dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3QtbW9kYWxcIlxuICAgICAgPlxuICAgICAgICB7cmVuZGVyU3RlcHMoKX1cbiAgICAgIDwvUmlnaHREcmF3ZXI+XG4gICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgKTtcbn07XG5cblJlZnVuZFJlcXVlc3RzTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdHNNb2RhbDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSwgRHJhd2VyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IENsb3NlIGFzIENsb3NlSWNvbiB9IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJpZ2h0RHJhd2VyID0gKHsgaWQsIHRpdGxlLCBjaGlsZHJlbiwgb3Blbiwgb25DbG9zZSwgY2xhc3NOYW1lIH0pID0+IChcbiAgPERyYXdlclxuICAgIGlkPXtpZH1cbiAgICBvcGVuPXtvcGVufVxuICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgYW5jaG9yPVwicmlnaHRcIlxuICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMud3JhcHBlcn0gJHtjbGFzc05hbWV9YH1cbiAgPlxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiY2xvc2UtZHJhd2VyXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2VCdG59XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICA+XG4gICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgIHt0aXRsZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJhd2VyPlxuKTtcblxuUmlnaHREcmF3ZXIucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aXRsZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm5vZGVdKSxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmlnaHREcmF3ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5pbXBvcnQgeyBnZXRTdW1taXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N1bW1pdFV0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFN1bW1pdEhlYWRlciA9ICgpID0+IHtcbiAgY29uc3QgeyBzdW1taXQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIHJldHVybiAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMud2lkZ2V0SGVhZGVyfVxuICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX1cbiAgICAgIGRhdGEtdGVzdGlkPVwibXktb3JkZXJzLXRpY2tldC1oZWFkZXJcIlxuICAgID5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PntzdW1taXQ/Lm5hbWV9PC9oMj5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PlxuICAgICAgICB7Z2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZShzdW1taXQpfVxuICAgICAgPC9oMj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN1bW1pdEhlYWRlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuXG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuXG5jb25zdCBEZWxlZ2F0ZUZvcm0gPSAoeyBvblN1Ym1pdCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHtcbiAgICAgIGRlbGVnYXRlX2ZpcnN0X25hbWU6IFwiXCIsXG4gICAgICBkZWxlZ2F0ZV9sYXN0X25hbWU6IFwiXCIsXG4gICAgICBkZWxlZ2F0ZV9lbWFpbDogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBkZWxlZ2F0ZV9maXJzdF9uYW1lOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpLFxuICAgICAgZGVsZWdhdGVfbGFzdF9uYW1lOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKSxcbiAgICAgIGRlbGVnYXRlX2VtYWlsOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAgIC5lbWFpbCh0KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMsIHsgcmVzZXRGb3JtIH0pID0+IHtcbiAgICAgIG9uU3VibWl0KHZhbHVlcyk7XG4gICAgICByZXNldEZvcm0oKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBmb3JtaWsucmVzZXRGb3JtKCk7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0udGl0bGVcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uYm9keVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2ZpcnN0X25hbWVcIlxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uZmlyc3RfbmFtZVwiKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZV9maXJzdF9uYW1lfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZmlyc3RfbmFtZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2ZpcnN0X25hbWUpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZmlyc3RfbmFtZSAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9maXJzdF9uYW1lXG4gICAgICAgICAgfVxuICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfbGFzdF9uYW1lXCJcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmxhc3RfbmFtZVwiKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZV9sYXN0X25hbWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9sYXN0X25hbWUgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9sYXN0X25hbWUpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfbGFzdF9uYW1lICYmXG4gICAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2xhc3RfbmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9lbWFpbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uZW1haWxcIil9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZV9lbWFpbH1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2VtYWlsICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZW1haWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZW1haWwgJiYgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9lbWFpbFxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uc2F2ZVwiKX1cbiAgICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5jYW5jZWxcIil9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2FuY2VsfVxuICAgICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgICAvPlxuICAgICAgPC9mb3JtPlxuICAgIDwvPlxuICApO1xufTtcblxuRGVsZWdhdGVGb3JtLnByb3BUeXBlcyA9IHtcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERlbGVnYXRlRm9ybTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgTGluaywgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uLy4uLy4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnbkhlYWRlciA9ICh7IGluUHJvZ3Jlc3MsIHRpY2tldCwgdXNlckVtYWlsLCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhc3NpZ25lZFRvWW91ID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJFbWFpbDtcblxuICBjb25zdCBnZXRTZWNvbmRhcnlUaXRsZSA9ICgpID0+IHtcbiAgICBpZiAoaW5Qcm9ncmVzcyA9PT0gXCJtYW5hZ2VcIikge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uZGVsZWdhdGVkXCIpfSAke1xuICAgICAgICB0aWNrZXQub3duZXIuZmlyc3RfbmFtZVxuICAgICAgfSAke3RpY2tldC5vd25lci5sYXN0X25hbWV9LmA7XG4gICAgfVxuXG4gICAgaWYgKGluUHJvZ3Jlc3MpIHtcbiAgICAgIGNvbnN0IHVzZXIgPSBhc3NpZ25lZFRvWW91ID8gXCJ5b3VcIiA6IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICAgIH1cblxuICAgIHJldHVybiB0aWNrZXQudGlja2V0X3R5cGUubmFtZTtcbiAgfTtcblxuICBjb25zdCBnZXRIZWFkZXJOb3RlID0gKCkgPT4ge1xuICAgIGlmIChpblByb2dyZXNzKSB7XG4gICAgICBjb25zdCB0cmFuc0tleSA9IGFzc2lnbmVkVG9Zb3VcbiAgICAgICAgPyBcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5hbnN3ZXJfeW91cl9lcVwiXG4gICAgICAgIDogXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYW5zd2VyX290aGVyc19lcVwiO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIHt0KHRyYW5zS2V5KX1cbiAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICB7LyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1pcy12YWxpZCAqL31cbiAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgY29tcG9uZW50PVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgICAgc3g9e3sgZm9udFdlaWdodDogNzAwLCBtYXJnaW46IFwiMjBweCAwIDEwcHhcIiB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmNvbXBsZXRlX2xhdGVyXCIpfVxuICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBcIlwiO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMucHVyY2hhc2VkQnlXcmFwcGVyfT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnB1cmNoYXNlZEJ5fT5cbiAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5wdXJjaGFzZWRfYnlcIil9e1wiIFwifVxuICAgICAgICAgIHt0aWNrZXQ/Lm9yZGVyPy5vd25lcl9lbWFpbH1cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOb30+XG4gICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICB0ZXh0PXt0aWNrZXQ/Lm9yZGVyPy5udW1iZXJ9XG4gICAgICAgICAgICByZXZlcnNlZFxuICAgICAgICAgICAgd2lkdGg9ezI1MH1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNVwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge2dldFNlY29uZGFyeVRpdGxlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyTm90ZX1cbiAgICAgICAgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgPlxuICAgICAgICB7Z2V0SGVhZGVyTm90ZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuLy8gQWRkaW5nIHByb3AtdHlwZXMgZm9yIHR5cGUtY2hlY2tpbmdcbkFzc2lnbkhlYWRlci5wcm9wVHlwZXMgPSB7XG4gIGluUHJvZ3Jlc3M6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHVzZXJFbWFpbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25IZWFkZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIExpbmssIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWFzc2lnbkhlYWRlciA9ICh7XG4gIGluUHJvZ3Jlc3MsXG4gIGFsbG93c0RlbGVnYXRlLFxuICB0aWNrZXQsXG4gIHVzZXJFbWFpbCxcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGFzc2lnbmVkVG9Zb3UgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlckVtYWlsO1xuXG4gIGNvbnN0IGdldFNlY29uZGFyeVRpdGxlID0gKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSBhc3NpZ25lZFRvWW91ID8gXCJ5b3VcIiA6IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuXG4gICAgaWYgKGluUHJvZ3Jlc3MgPT09IFwibWFuYWdlXCIpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uZGVsZWdhdGVkXCIpfSAke1xuICAgICAgICB0aWNrZXQub3duZXIuZmlyc3RfbmFtZVxuICAgICAgfSAke3RpY2tldC5vd25lci5sYXN0X25hbWV9LmA7XG4gICAgfVxuXG4gICAgaWYgKCFpblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLnJlYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICB9O1xuXG4gIGNvbnN0IGdldEhlYWRlck5vdGUgPSAoKSA9PiB7XG4gICAgaWYgKCFpblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gYWxsb3dzRGVsZWdhdGVcbiAgICAgICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uY2hvb3NlX29wdGlvblwiKVxuICAgICAgICA6IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jaG9vc2Vfb3B0aW9uX25vX2RlbGVnYXRlXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHRyYW5zS2V5ID0gYXNzaWduZWRUb1lvdVxuICAgICAgPyBcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFuc3dlcl95b3VyX2VxXCJcbiAgICAgIDogXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hbnN3ZXJfb3RoZXJzX2VxXCI7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge3QodHJhbnNLZXkpfVxuICAgICAgICA8YnIgLz5cbiAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi99XG4gICAgICAgIDxMaW5rXG4gICAgICAgICAgY29tcG9uZW50PVwiYnV0dG9uXCJcbiAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgc3g9e3sgZm9udFdlaWdodDogNzAwLCBtYXJnaW46IFwiMjBweCAwIDEwcHhcIiB9fVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jb21wbGV0ZV9sYXRlclwiKX1cbiAgICAgICAgPC9MaW5rPlxuICAgICAgPC8+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHtnZXRTZWNvbmRhcnlUaXRsZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlck5vdGV9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2dldEhlYWRlck5vdGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbi8vIEFkZGluZyBwcm9wLXR5cGVzIGZvciB0eXBlLWNoZWNraW5nXG5SZWFzc2lnbkhlYWRlci5wcm9wVHlwZXMgPSB7XG4gIGluUHJvZ3Jlc3M6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHVzZXJFbWFpbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFzc2lnbkhlYWRlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuXG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuXG5jb25zdCBSZWFzc2lnbkZvcm0gPSAoeyBvblN1Ym1pdCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogXCJcIixcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAgIC5lbWFpbCh0KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSksXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiB5dXAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLnRleHQuc3RyaW5nXCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0OiAodmFsdWVzLCB7IHJlc2V0Rm9ybSB9KSA9PiB7XG4gICAgICBvblN1Ym1pdCh2YWx1ZXMpO1xuICAgICAgcmVzZXRGb3JtKCk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgZm9ybWlrLnJlc2V0Rm9ybSgpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnRpdGxlXCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLmJvZHlcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJuZXdfYXR0ZW5kZWVfZW1haWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLm5ld19hdHRlbmRlZV9lbWFpbFwiKX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLm5ld19hdHRlbmRlZV9lbWFpbH1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbClcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsXG4gICAgICAgICAgfVxuICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwicGVyc29uYWxfbWVzc2FnZVwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0ucGVyc29uYWxfbWVzc2FnZVwiKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5wZXJzb25hbF9tZXNzYWdlfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgbXVsdGlsaW5lXG4gICAgICAgICAgbWluUm93cz17NH1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiYgZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8Rm9ybUZvb3RlclxuICAgICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5zYXZlXCIpfVxuICAgICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLmNhbmNlbFwiKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAgIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgPC8+XG4gICk7XG59O1xuXG5SZWFzc2lnbkZvcm0ucHJvcFR5cGVzID0ge1xuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhc3NpZ25Gb3JtO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBDb2xsYXBzZSwgRGl2aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBhc3NpZ25BdHRlbmRlZSxcbiAgZGVsZWdhdGVUaWNrZXQsXG4gIHJlYXNzaWduVGlja2V0LFxuICBzYXZlRXh0cmFRdWVzdGlvbnNcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBSZWFzc2lnbkZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9SZWFzc2lnbkZvcm1cIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBBc3NpZ25FUUZvcm0gZnJvbSBcIi4uL0Fzc2lnbkVRRm9ybVwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuaW1wb3J0IHVzZUdldFRpY2tldCBmcm9tIFwiLi4vLi4vaG9va3MvdXNlR2V0VGlja2V0XCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgRGVsZWdhdGVGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvRGVsZWdhdGVGb3JtXCI7XG5pbXBvcnQgQXNzaWduSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvSGVhZGVyL0Fzc2lnbkhlYWRlclwiO1xuaW1wb3J0IFJlYXNzaWduSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvSGVhZGVyL1JlYXNzaWduSGVhZGVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcblxuY29uc3QgVGlja2V0QXNzaWduID0gKHsgdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIG9wZW4sIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3NhdmVNZXNzYWdlLCBzZXRTYXZlTWVzc2FnZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW2Fzc2lnbk9wdGlvbiwgc2V0QXNzaWduT3B0aW9uXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbYXNzaWduYXRpb25JblByb2dyZXNzLCBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3NdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgaXNBc3NpZ25lZFRvTWUgPSB1c2VyUHJvZmlsZT8uZW1haWwgPT09IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuICBjb25zdCB7IGFsbG93c0RlbGVnYXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgY29uc3Qgb25Bc3NpZ24gPSAoZW1haWwsIG1lc3NhZ2UgPSBcIlwiKSA9PiB7XG4gICAgaWYgKG93bmVySWQpIHtcbiAgICAgIGRpc3BhdGNoKHJlYXNzaWduVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkpLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoYCR7YXNzaWduT3B0aW9ufWApO1xuICAgICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsKSkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBvbkRlbGVnYXRlID0gKGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsKSA9PiB7XG4gICAgZGlzcGF0Y2goXG4gICAgICBkZWxlZ2F0ZVRpY2tldChvcmRlcklkLCB0aWNrZXRJZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpXG4gICAgKS50aGVuKCgpID0+IHtcbiAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZUVRRm9ybSA9ICgpID0+IHtcbiAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoXCJcIik7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VTYXZlTWVzc2FnZSA9ICgpID0+IHtcbiAgICBzZXRTYXZlTWVzc2FnZShudWxsKTtcbiAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoXCJcIik7XG4gICAgc2V0VGltZW91dChvbkNsb3NlLCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2F2ZUVRID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0cmFuc2Zvcm1BbndlcnNGb3JtYXQodmFsKTtcblxuICAgIHJldHVybiBkaXNwYXRjaChzYXZlRXh0cmFRdWVzdGlvbnModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfc3VjY2Vzc1wiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdChcInRpY2tldF9hc3NpZ24uc2F2aW5nX3N1Y2Nlc3NfZGVzY3JpcHRpb25cIilcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19lcnJvclwiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3QgdGl0bGUgPSBvd25lcklkXG4gICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24udGl0bGVcIilcbiAgICA6IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24udGl0bGVcIik7XG4gIGNvbnN0IEhlYWRlciA9IG93bmVySWQgPyBSZWFzc2lnbkhlYWRlciA6IEFzc2lnbkhlYWRlcjtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8UmlnaHREcmF3ZXJcbiAgICAgICAgaWQ9XCJyZWFzc2lnbkRyYXdlclwiXG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgID5cbiAgICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRSZWFzc2lnbkNvbnRhaW5lcn0+XG4gICAgICAgICAgICA8SGVhZGVyXG4gICAgICAgICAgICAgIGluUHJvZ3Jlc3M9e2Fzc2lnbmF0aW9uSW5Qcm9ncmVzc31cbiAgICAgICAgICAgICAgYWxsb3dzRGVsZWdhdGU9e2FsbG93c0RlbGVnYXRlfVxuICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgdXNlckVtYWlsPXt1c2VyUHJvZmlsZS5lbWFpbH1cbiAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIHthc3NpZ25hdGlvbkluUHJvZ3Jlc3MgPyAoXG4gICAgICAgICAgICAgIDxBc3NpZ25FUUZvcm1cbiAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZUVRfVxuICAgICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbk9wdGlvbnNXcmFwcGVyfT5cbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzQXNzaWduZWRUb01lfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Bc3NpZ24odXNlclByb2ZpbGUuZW1haWwsIFwiXCIpfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdG9fbWVcIil9XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPERpdmlkZXIgdmFyaWFudD1cIm1pZGRsZVwiIHN4PXt7IG15OiAzLCBweDogNCB9fT5cbiAgICAgICAgICAgICAgICAgIG9yXG4gICAgICAgICAgICAgICAgPC9EaXZpZGVyPlxuICAgICAgICAgICAgICAgIDxCb3g+XG4gICAgICAgICAgICAgICAgICA8Q29sbGFwc2UgaW49e2Fzc2lnbk9wdGlvbiA9PT0gXCJvdGhlclwifSB0aW1lb3V0PXs1MDB9PlxuICAgICAgICAgICAgICAgICAgICA8UmVhc3NpZ25Gb3JtXG4gICAgICAgICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9eyh2YWwpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkFzc2lnbih2YWwubmV3X2F0dGVuZGVlX2VtYWlsLCB2YWwucGVyc29uYWxfbWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0QXNzaWduT3B0aW9uKG51bGwpfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAgICAgICAgICAgIHthc3NpZ25PcHRpb24gIT09IFwib3RoZXJcIiAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QXNzaWduT3B0aW9uKFwib3RoZXJcIil9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX290aGVyXCIpfVxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAge2FsbG93c0RlbGVnYXRlICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxEaXZpZGVyIHZhcmlhbnQ9XCJtaWRkbGVcIiBzeD17eyBteTogMywgcHg6IDQgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgb3JcbiAgICAgICAgICAgICAgICAgICAgPC9EaXZpZGVyPlxuICAgICAgICAgICAgICAgICAgICA8Q29sbGFwc2UgaW49e2Fzc2lnbk9wdGlvbiA9PT0gXCJtYW5hZ2VcIn0gdGltZW91dD17NTAwfT5cbiAgICAgICAgICAgICAgICAgICAgICA8RGVsZWdhdGVGb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9eyh2YWwpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZWdhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2ZpcnN0X25hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2xhc3RfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZW1haWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0QXNzaWduT3B0aW9uKG51bGwpfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvQ29sbGFwc2U+XG4gICAgICAgICAgICAgICAgICAgIHthc3NpZ25PcHRpb24gIT09IFwibWFuYWdlXCIgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24oXCJtYW5hZ2VcIil9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLm1hbmFnZV90aWNrZXRcIil9XG4gICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICl9XG4gICAgICA8L1JpZ2h0RHJhd2VyPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIXNhdmVNZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlU2F2ZU1lc3NhZ2V9XG4gICAgICAgIHRpdGxlPXtzYXZlTWVzc2FnZT8udGl0bGV9XG4gICAgICAgIGRlc2NyaXB0aW9uPXtzYXZlTWVzc2FnZT8uZGVzY3JpcHRpb259XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0QXNzaWduLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0QXNzaWduO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBBdXRvY29tcGxldGUsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuY29uc3QgQ29tcGFueUZpZWxkID0gKHsgZm9ybWlrLCBzdW1taXRJZCwgaXNSZXF1aXJlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtvcHRpb25zLCBzZXRPcHRpb25zXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgc2V0RmllbGRUb3VjaGVkLCBzZXRGaWVsZFZhbHVlIH0gPSBmb3JtaWs7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55O1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgPT09IFwiXCIpIHtcbiAgICAgIHNldE9wdGlvbnModmFsdWUgPyBbdmFsdWVdIDogW10pO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyhzdW1taXRJZCwgaW5wdXRWYWx1ZSwgKHJlc3VsdHMpID0+IHtcbiAgICAgIGxldCBuZXdPcHRpb25zID0gW107XG5cbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBuZXdPcHRpb25zID0gW3ZhbHVlXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdHMpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFsuLi5uZXdPcHRpb25zLCAuLi5yZXN1bHRzXTtcbiAgICAgIH1cblxuICAgICAgc2V0T3B0aW9ucyhuZXdPcHRpb25zKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9LCBbdmFsdWUsIGlucHV0VmFsdWVdKTtcblxuICByZXR1cm4gKFxuICAgIDxBdXRvY29tcGxldGVcbiAgICAgIG5hbWU9e25hbWV9XG4gICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgYXV0b0NvbXBsZXRlXG4gICAgICBmcmVlU29sb1xuICAgICAgaW5jbHVkZUlucHV0SW5MaXN0XG4gICAgICBmaWx0ZXJTZWxlY3RlZE9wdGlvbnNcbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIG9uQmx1cj17KCkgPT4gc2V0RmllbGRUb3VjaGVkKG5hbWUsIHRydWUsIHRydWUpfVxuICAgICAgZ2V0T3B0aW9uTGFiZWw9eyhvcHRpb24pID0+IHtcbiAgICAgICAgLy8gVmFsdWUgc2VsZWN0ZWQgd2l0aCBlbnRlciwgcmlnaHQgZnJvbSB0aGUgaW5wdXRcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkZCBcInh4eFwiIG9wdGlvbiBjcmVhdGVkIGR5bmFtaWNhbGx5XG4gICAgICAgIGlmIChvcHRpb24uaW5wdXRWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiBvcHRpb24uaW5wdXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWd1bGFyIG9wdGlvblxuICAgICAgICByZXR1cm4gb3B0aW9uLm5hbWU7XG4gICAgICB9fVxuICAgICAgb25DaGFuZ2U9eyhldmVudCwgbmV3VmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdG1wVmFsdWUgPSBuZXdWYWx1ZT8uaW5wdXRWYWx1ZSB8fCBuZXdWYWx1ZTtcbiAgICAgICAgc2V0T3B0aW9ucyh0bXBWYWx1ZSA/IFt0bXBWYWx1ZSwgLi4ub3B0aW9uc10gOiBvcHRpb25zKTtcbiAgICAgICAgc2V0RmllbGRWYWx1ZShuYW1lLCB0bXBWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgb25JbnB1dENoYW5nZT17KGV2ZW50LCBuZXdJbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgIHNldElucHV0VmFsdWUobmV3SW5wdXRWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgZmlsdGVyT3B0aW9ucz17KG9wdGlvbnMsIHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCB7IGlucHV0VmFsdWUgfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbLi4ub3B0aW9uc107XG4gICAgICAgIC8vIFN1Z2dlc3QgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZhbHVlXG4gICAgICAgIGNvbnN0IGlzRXhpc3RpbmcgPSBvcHRpb25zLnNvbWUoXG4gICAgICAgICAgKG9wdGlvbikgPT4gaW5wdXRWYWx1ZSA9PT0gb3B0aW9uLnRpdGxlXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpbnB1dFZhbHVlICE9PSBcIlwiICYmICFpc0V4aXN0aW5nKSB7XG4gICAgICAgICAgZmlsdGVyZWQucHVzaCh7XG4gICAgICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICAgICAgbmFtZTogYFNlbGVjdCBcIiR7aW5wdXRWYWx1ZX1cImBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgIH19XG4gICAgICByZW5kZXJJbnB1dD17KHBhcmFtcykgPT4gKFxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucGFyYW1zfVxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5hdHRlbmRlZV9jb21wYW55XCIpfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGhlbHBlclRleHQ9e2hlbHBlclRleHR9XG4gICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgcmVuZGVyT3B0aW9uPXsocHJvcHMsIG9wdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB7IGtleSwgLi4ub3B0aW9uUHJvcHMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nXG4gICAgICAgICAgPGxpIGtleT17a2V5fSB7Li4ub3B0aW9uUHJvcHN9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgc3g9e3sgZm9udFNpemU6IFwiMXJlbVwiLCBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICAvPlxuICApO1xufTtcblxuQ29tcGFueUZpZWxkLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbXBhbnlGaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciA9ICh7XG4gIGRpc2NsYWltZXIsXG4gIGZvcm1payxcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBpc1JlcXVpcmVkID0gdHJ1ZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWQ7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciB9ID0gZm9ybWlrO1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uZGlzY2xhaW1lcl9sYWJlbFwiKX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmV4dHJhX3F1ZXN0aW9uc19mb3JtLmRpc2NsYWltZXJfbGFiZWxcIil9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5wcm9wVHlwZXMgPSB7XG4gIGRpc2NsYWltZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5cbmltcG9ydCB7XG4gIGdldFR5cGVWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi8uLi8uLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5cbmltcG9ydCBUaWNrZXRPd25lckZpZWxkcyBmcm9tIFwiLi4vVGlja2V0T3duZXJGaWVsZHNcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5pbXBvcnQgdXNlU2Nyb2xsVG9FcnJvciBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlU2Nyb2xsVG9FcnJvclwiO1xuaW1wb3J0IHtcbiAgcGFyc2VBbnN3ZXJzLFxuICBidWlsZFZhbGlkYXRpb25TY2hlbWFcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldEZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBzdW1taXQsXG4gIGNhbkVkaXQsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYW5zd2VycyA9IHRpY2tldD8ub3duZXI/LmV4dHJhX3F1ZXN0aW9ucy5yZWR1Y2UoKHJlcywgYW5zKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKGFucy5xdWVzdGlvbi5uYW1lLCBhbnMucXVlc3Rpb24uaWQpO1xuICAgIHJlc1txdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbHVlKGFucy52YWx1ZSwgYW5zLnF1ZXN0aW9uLnR5cGUpO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYW5zd2VycyxcbiAgICAgIHRydWUsXG4gICAgICB0cnVlXG4gICAgKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIHRydWUsXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWssIFwiZGV0YWlsc0RyYXdlclwiKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRpY2tldE93bmVyRmllbGRzXG4gICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICBpc0RlbGVnYXRlZD17ISF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWR9XG4gICAgICAgIHN1bW1pdElkPXtzdW1taXQuaWR9XG4gICAgICAgIGRpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgIC8+XG5cbiAgICAgIHtleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYWRkaXRpb25hbERldGFpbHN9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmFkaXRpb25hbF9kZXRhaWxzXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHNcbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIGFsbG93RWRpdD17Y2FuRWRpdH1cbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIGlzRGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9kZXRhaWwuc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblRpY2tldEZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0Rm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29tcGFueUZpZWxkIGZyb20gXCIuLi9Db21wYW55RmllbGRcIjtcblxuY29uc3QgVGlja2V0T3duZXJGaWVsZHMgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBkaXNhYmxlZCwgaXNEZWxlZ2F0ZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciB9ID0gZm9ybWlrO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG5hbWU9e1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsfVxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuZW1haWxcIil9XG4gICAgICAgIGRpc2FibGVkXG4gICAgICAgIHZhbHVlPXt2YWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdfVxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgLz5cbiAgICAgIHtpc0RlbGVnYXRlZCAmJiAoXG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIHN4PXt7IGZvbnRXZWlnaHQ6IDUwMCwgbWFyZ2luOiBcIjEwcHggMFwiIH19PlxuICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5tYW5hZ2VfZm9yXCIpfVxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICApfVxuICAgICAge1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWUsIFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXS5tYXAoXG4gICAgICAgIChuYW1lKSA9PiAoXG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgbGFiZWw9e3QoYHRpY2tldF9kZXRhaWwuJHtuYW1lfWApfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZCB8fCBpc0RlbGVnYXRlZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICBlcnJvcj17dG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSl9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtmb3JtaWsudG91Y2hlZFtuYW1lXSAmJiBmb3JtaWsuZXJyb3JzW25hbWVdfVxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgKVxuICAgICAgKX1cbiAgICAgIDxDb21wYW55RmllbGQgZm9ybWlrPXtmb3JtaWt9IHN1bW1pdElkPXtzdW1taXRJZH0gaXNSZXF1aXJlZCAvPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5pbmZvTm90ZX0+e3QoXCJ0aWNrZXRfZGV0YWlsLmluZm9fbm90ZVwiKX08L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblRpY2tldE93bmVyRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNEZWxlZ2F0ZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRPd25lckZpZWxkcztcbiIsImV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBRUkNvZGUgZnJvbSBcInJlYWN0LXFyLWNvZGVcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBEcmF3ZXIsIEljb25CdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgQ2xvc2UgYXMgQ2xvc2VJY29uLFxuICBGaWxlRG93bmxvYWRPdXRsaW5lZCBhcyBEb3dubG9hZEljb24sXG4gIEVtYWlsT3V0bGluZWQgYXMgRW1haWxJY29uXG59IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBUV09fSVRFTSB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuaW1wb3J0IHtcbiAgZ2V0VGlja2V0UERGLFxuICBzYXZlVGlja2V0RGV0YWlscyxcbiAgcmVzZW5kTm90aWZpY2F0aW9uXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0RGV0YWlsID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRJZCxcbiAgb3JkZXJJZCxcbiAgb3duZXJJZCxcbiAgb3BlbixcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9ID0gdXNlR2V0VGlja2V0KFxuICAgIHRpY2tldElkLFxuICAgIG9yZGVySWQsXG4gICAgb3duZXJJZCxcbiAgICBvcGVuXG4gICk7XG4gIGNvbnN0IFtzYXZlTWVzc2FnZSwgc2V0U2F2ZU1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFtzZW50Q29uZmlybWF0aW9uLCBzZXRTZW50Q29uZmlybWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXI/Lm93bmVyX2lkID09PSB1c2VyUHJvZmlsZT8uaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlPy5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuICBjb25zdCB7IGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBvblNhdmUgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVUaWNrZXREZXRhaWxzKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19zdWNjZXNzX2Rlc2NyaXB0aW9uXCIpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfZXJyb3JcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGVyci50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VTYXZlTWVzc2FnZSA9ICgpID0+IHtcbiAgICBzZXRTYXZlTWVzc2FnZShudWxsKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgY29uc3QgZG93bmxvYWRUaWNrZXRQZGYgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2goZ2V0VGlja2V0UERGKHRpY2tldCkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2VuZEVtYWlsID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2VuZE5vdGlmaWNhdGlvbih0aWNrZXQpKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFNlbnRDb25maXJtYXRpb24odHJ1ZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U2VudENvbmZpcm1hdGlvbihmYWxzZSk7XG4gICAgICB9LCBNSUxMSVNFQ19UT19TRUMgKiBUV09fSVRFTSk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPERyYXdlclxuICAgICAgICBpZD1cImRldGFpbHNEcmF3ZXJcIlxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldERldGFpbENvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbG9zZUJ0bn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICAgICAgICAgIHt0aWNrZXQ/LnRpY2tldF90eXBlPy5uYW1lfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5wdXJjaGFzZWRfYnlcIil9IHt0aWNrZXQ/Lm9yZGVyPy5vd25lcl9lbWFpbH1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuXG4gICAgICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5xckNvZGV9PlxuICAgICAgICAgICAgICAgICAgICA8UVJDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MjU2fVxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGlja2V0LnFyX2NvZGV9XG4gICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNTYgMjU2XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXMuc3RhdHVzfT57dChcInRpY2tldF9kZXRhaWwuc3RhdHVzXCIpfTwvcD5cbiAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5xck5vdGV9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5xcl9ub3RlXCIpfVxuICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIHshc3VtbWl0Py5pc192aXJ0dWFsICYmIGlzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRvd25sb2FkQnRufVxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZG93bmxvYWRUaWNrZXRQZGZ9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxEb3dubG9hZEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kb3dubG9hZFwiKX1cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5zZW5kQnRufSAke1xuICAgICAgICAgICAgICAgICAgICAgIHNlbnRDb25maXJtYXRpb24gPyBzdHlsZXMuc2VudCA6IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uU2VuZEVtYWlsfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17c2VudENvbmZpcm1hdGlvbn1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEVtYWlsSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAge3NlbnRDb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICA/IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbnRcIilcbiAgICAgICAgICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbmRcIil9XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTnVtYmVyfT5cbiAgICAgICAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICAgICAgICB3aWR0aD17MTUwfVxuICAgICAgICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiaDRcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2luZm9ybWF0aW9uXCIpfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIHt0aWNrZXQgJiYgKFxuICAgICAgICAgICAgICAgIDxUaWNrZXRGb3JtXG4gICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlfVxuICAgICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L0RyYXdlcj5cbiAgICAgIDxDdXN0b21EaWFsb2dcbiAgICAgICAgb3Blbj17ISFzYXZlTWVzc2FnZX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZVNhdmVNZXNzYWdlfVxuICAgICAgICB0aXRsZT17c2F2ZU1lc3NhZ2U/LnRpdGxlfVxuICAgICAgICBkZXNjcmlwdGlvbj17c2F2ZU1lc3NhZ2U/LmRlc2NyaXB0aW9ufVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGV0YWlsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0U3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IHJlZnVuZFJlcXVlc3RzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uZmluZChcbiAgICAocikgPT4gci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCJcbiAgKTtcbiAgY29uc3QgeyBpc0luY29tcGxldGUsIGlzVW5hc3NpZ25lZCwgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRTdGF0dXNDb250YWluZXJ9PlxuICAgICAge2lzQWN0aXZlID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIHshIXJlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHJlZnVuZCByZXF1ZXN0ZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNJbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGluY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25JbmNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfaW5jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzVW5hc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyB1bmFzc2lnbmVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uVW5hc3NpZ25lZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNhbmNlbGxlZFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ2FuY2VsbGVkfWB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcblxuVGlja2V0U3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgcmVmdW5kUmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRGl2aWRlcixcbiAgVGFiLFxuICBUYWJzLFxuICB1c2VNZWRpYVF1ZXJ5LFxuICB1c2VUaGVtZVxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRklSU1RfUEFHRSxcbiAgVEFCU1xufSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgTXlPcmRlcnNUaWNrZXRzIGZyb20gXCIuLi9NeU9yZGVyc1RpY2tldHNcIjtcbmltcG9ydCBBc3NpZ25lZFRvTWUgZnJvbSBcIi4uL09yZGVyc0xpc3QvQXNzaWduZWRUb01lXCI7XG5pbXBvcnQge1xuICBnZXRUaWNrZXRzQnlPcmRlcixcbiAgZ2V0VXNlck9yZGVycyxcbiAgZ2V0VXNlclRpY2tldHNcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgV2lkZ2V0VGFicyA9ICh7IHRpdGxlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdGFiLCBzZXRUYWJdID0gdXNlU3RhdGUoVEFCUy5PUkRFUlMpO1xuICBjb25zdCBbdGlja2V0c0Z1bGx5TG9hZGVkLCBzZXRUaWNrZXRzRnVsbHlMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXIsXG4gICAgc29ydCxcbiAgICBvcmRlcnNfcGVyX3BhZ2U6IG9yZGVyc1BlclBhZ2UsXG4gICAgdGlja2V0X3Blcl9wYWdlOiB0aWNrZXRQZXJQYWdlLFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIG1lbWJlck9yZGVyc1xuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG5cbiAgY29uc3QgaGFuZGxlVGFiQ2hhbmdlID0gKF8sIG5ld1RhYikgPT4ge1xuICAgIHNldFRhYihuZXdUYWIpO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoQXNzaWduZWRUaWNrZXRzID0gKHBhZ2UpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRVc2VyVGlja2V0cyh7IHBhZ2UsIHBlclBhZ2U6IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsIGZpbHRlciwgc29ydCB9KVxuICAgICk7XG5cbiAgY29uc3QgZmV0Y2hPcmRlclRpY2tldHMgPSAocGFnZSkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFVzZXJPcmRlcnMoe1xuICAgICAgICBwYWdlLFxuICAgICAgICBwZXJQYWdlOiBvcmRlcnNQZXJQYWdlLFxuICAgICAgICBmaWx0ZXIsXG4gICAgICAgIHNvcnRcbiAgICAgIH0pXG4gICAgKS50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBvcmRlclRpY2tldHNQcm9taXNlcyA9IGRhdGEubWFwKChvcmRlcikgPT5cbiAgICAgICAgZGlzcGF0Y2goXG4gICAgICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgICAgICBjdXJyZW50X3BhZ2U6IEZJUlNUX1BBR0UsXG4gICAgICAgICAgICBwZXJQYWdlOiB0aWNrZXRQZXJQYWdlLFxuICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgc29ydFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChvcmRlclRpY2tldHNQcm9taXNlcyk7XG4gICAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBmZXRjaFByb21pc2VzID0gW1xuICAgICAgZmV0Y2hBc3NpZ25lZFRpY2tldHMoRklSU1RfUEFHRSksXG4gICAgICBmZXRjaE9yZGVyVGlja2V0cyhGSVJTVF9QQUdFKVxuICAgIF07XG4gICAgUHJvbWlzZS5hbGwoZmV0Y2hQcm9taXNlcykudGhlbigoKSA9PiBzZXRUaWNrZXRzRnVsbHlMb2FkZWQodHJ1ZSkpO1xuICB9LCBbZmlsdGVyLCBzb3J0XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGlja2V0c0Z1bGx5TG9hZGVkKSB7XG4gICAgICBpZiAobWVtYmVyT3JkZXJzPy5sZW5ndGggPT09IDAgJiYgdXNlclRpY2tldHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgc2V0VGFiKFRBQlMuVElDS0VUUyk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbdGlja2V0c0Z1bGx5TG9hZGVkXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRhYldyYXBwZXJ9PlxuICAgICAgPFRhYnNcbiAgICAgICAgdmFsdWU9e3RhYn1cbiAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRhYkNoYW5nZX1cbiAgICAgICAgdmFyaWFudD17aXNNb2JpbGUgPyBcImZ1bGxXaWR0aFwiIDogXCJzdGFuZGFyZFwifVxuICAgICAgPlxuICAgICAgICA8VGFiIGxhYmVsPXt0KFwib3JkZXJzLnRpdGxlXCIpfSB2YWx1ZT17VEFCUy5PUkRFUlN9IC8+XG4gICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuYXNzaWduZWRfdG9fbWVcIil9IHZhbHVlPXtUQUJTLlRJQ0tFVFN9IC8+XG4gICAgICA8L1RhYnM+XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEJveCBzeD17eyBwdDogNiwgcGI6IDMgfX0+e3RpdGxlfTwvQm94PlxuICAgICAge3RhYiA9PT0gVEFCUy5PUkRFUlMgJiYgPE15T3JkZXJzVGlja2V0cyBmZXRjaERhdGE9e2ZldGNoT3JkZXJUaWNrZXRzfSAvPn1cbiAgICAgIHt0YWIgPT09IFRBQlMuVElDS0VUUyAmJiAoXG4gICAgICAgIDxBc3NpZ25lZFRvTWUgZmV0Y2hEYXRhPXtmZXRjaEFzc2lnbmVkVGlja2V0c30gLz5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRUYWJzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCwgY29ubmVjdCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIHJlc2V0RmlsdGVyLFxuICByZXNldEVycm9yLFxuICBjaGFuZ2VTb3J0LFxuICBjaGFuZ2VGaWx0ZXJcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBDdXN0b21UaGVtZSBmcm9tIFwiLi4vQ3VzdG9tVGhlbWVcIjtcbmltcG9ydCBMb2FkZXIgZnJvbSBcIi4uL0xvYWRlclwiO1xuaW1wb3J0IEN1c3RvbURpYWxvZ0NvbnRleHQgZnJvbSBcIi4uL0N1c3RvbURpYWxvZy9Db250ZXh0XCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nIGZyb20gXCIuLi9DdXN0b21EaWFsb2dcIjtcblxuaW1wb3J0IEZpbHRlcnMgZnJvbSBcIi4uL0ZpbHRlcnNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBXaWRnZXRUYWJzIGZyb20gXCIuLi9XaWRnZXRUYWJzXCI7XG5pbXBvcnQgU3VtbWl0SGVhZGVyIGZyb20gXCIuLi9TdW1taXRIZWFkZXJcIjtcblxuY29uc3QgV2lkZ2V0V3JhcHBlciA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFttZXNzYWdlLCBzZXRNZXNzYWdlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbbWVzc2FnZUNhbGxiYWNrLCBzZXRNZXNzYWdlQ2FsbGJhY2tdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nLFxuICAgIGFwaUVycm9yLFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX09SREVSX05VTUJFUjogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3Qgb25SZXNldCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldEZpbHRlcigpKTtcbiAgfTtcblxuICBjb25zdCByZXNldEFwaUVycm9yID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RXJyb3IoKSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBpRXJyb3IpIHtcbiAgICAgIHNldE1lc3NhZ2UoYXBpRXJyb3IpO1xuICAgICAgc2V0TWVzc2FnZUNhbGxiYWNrKHJlc2V0QXBpRXJyb3IpO1xuICAgIH1cbiAgfSwgW2FwaUVycm9yXSk7XG5cbiAgY29uc3Qgb25GaWx0ZXIgPSAoZmlsdGVyVmFsdWUpID0+IHtcbiAgICBkaXNwYXRjaChjaGFuZ2VGaWx0ZXIoZmlsdGVyVmFsdWUpKTtcbiAgfTtcblxuICBjb25zdCBvblNvcnQgPSAoc29ydFZhbHVlKSA9PiB7XG4gICAgZGlzcGF0Y2goY2hhbmdlU29ydChzb3J0VmFsdWUpKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxDdXN0b21UaGVtZT5cbiAgICAgIDxMb2FkZXIgb3Blbj17bG9hZGluZ30gLz5cbiAgICAgIDxDdXN0b21EaWFsb2dcbiAgICAgICAgb3Blbj17ISFtZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiB7XG4gICAgICAgICAgc2V0TWVzc2FnZShudWxsKTtcbiAgICAgICAgICBpZiAobWVzc2FnZUNhbGxiYWNrKSBtZXNzYWdlQ2FsbGJhY2soKTtcbiAgICAgICAgfX1cbiAgICAgICAgYm9keT17bWVzc2FnZT8uYm9keX1cbiAgICAgICAgdGl0bGU9e21lc3NhZ2U/LnRpdGxlfVxuICAgICAgLz5cbiAgICAgIDxGaWx0ZXJzXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94IHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19PlxuICAgICAgICA8aDMgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0c1RpdGxlVGV4dH0+XG4gICAgICAgICAge2ZpbHRlclZhbHVlc1xuICAgICAgICAgICAgPyB0KFwibGFiZWxzLnNlYXJjaF9yZXN1bHRzXCIsIHsgZmlsdGVyOiBmaWx0ZXJWYWx1ZXMgfSlcbiAgICAgICAgICAgIDogdChcImxhYmVscy50aWNrZXRzXCIpfVxuICAgICAgICA8L2gzPlxuICAgICAgPC9Cb3g+XG4gICAgICA8Q3VzdG9tRGlhbG9nQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17KHNldE1lc3NhZ2UsIHNldE1lc3NhZ2VDYWxsYmFjayl9PlxuICAgICAgICA8V2lkZ2V0VGFicyB0aXRsZT17PFN1bW1pdEhlYWRlciAvPn0gLz5cbiAgICAgIDwvQ3VzdG9tRGlhbG9nQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L0N1c3RvbVRoZW1lPlxuICApO1xufTtcblxuY29uc3QgbWFwU3RhdGVUb1Byb3BzID0gKHsgd2lkZ2V0U3RhdGUgfSkgPT4gKHtcbiAgc29ydDogd2lkZ2V0U3RhdGUuc29ydCxcbiAgZmlsdGVyOiB3aWRnZXRTdGF0ZS5maWx0ZXJcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywge30pKFdpZGdldFdyYXBwZXIpO1xuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IGdldEV4dHJhUXVlc3Rpb25zLCBnZXRUaWNrZXQgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuXG5jb25zdCB1c2VHZXRUaWNrZXQgPSAodGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIHJ1bikgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocnVuKSB7XG4gICAgICBpZiAodGlja2V0SWQgJiYgb3JkZXJJZCkge1xuICAgICAgICBkaXNwYXRjaChnZXRUaWNrZXQodGlja2V0SWQsIG9yZGVySWQpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG93bmVySWQpIHtcbiAgICAgICAgZGlzcGF0Y2goZ2V0RXh0cmFRdWVzdGlvbnMob3duZXJJZCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3RpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBydW5dKTtcblxuICBjb25zdCB7IGV4dHJhUXVlc3Rpb25zLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGVcbiAgKTtcblxuICByZXR1cm4geyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VHZXRUaWNrZXQ7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gU21vb3RoIHNjcm9sbGluZyBmdW5jdGlvbiB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbmZ1bmN0aW9uIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgdGFyZ2V0U2Nyb2xsVG9wLCBkdXJhdGlvbikge1xuICBjb25zdCBzdGFydFNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gIGNvbnN0IGRpc3RhbmNlID0gdGFyZ2V0U2Nyb2xsVG9wIC0gc3RhcnRTY3JvbGxUb3A7XG4gIGxldCBzdGFydFRpbWUgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIGFuaW1hdGlvblN0ZXAodGltZXN0YW1wKSB7XG4gICAgaWYgKCFzdGFydFRpbWUpIHN0YXJ0VGltZSA9IHRpbWVzdGFtcDtcbiAgICBjb25zdCBlbGFwc2VkID0gdGltZXN0YW1wIC0gc3RhcnRUaW1lO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGgubWluKGVsYXBzZWQgLyBkdXJhdGlvbiwgMSk7XG4gICAgY29uc3QgZWFzZUluT3V0UXVhZCA9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgcHJvZ3Jlc3MgPCAwLjUgPyAyICogcHJvZ3Jlc3MgKiogMiA6IDEgLSAoLTIgKiBwcm9ncmVzcyArIDIpICoqIDIgLyAyO1xuXG4gICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IHN0YXJ0U2Nyb2xsVG9wICsgZGlzdGFuY2UgKiBlYXNlSW5PdXRRdWFkO1xuXG4gICAgaWYgKGVsYXBzZWQgPCBkdXJhdGlvbikge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblN0ZXApO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbn1cblxuY29uc3QgdXNlU2Nyb2xsVG9FcnJvciA9IChmb3JtaWssIGNvbnRhaW5lcklkKSA9PiB7XG4gIGNvbnN0IHsgZXJyb3JzLCBpc1ZhbGlkLCBpc1N1Ym1pdHRpbmcgfSA9IGZvcm1paztcbiAgY29uc3QgZXJyb3JBcnJheSA9IE9iamVjdC5rZXlzKGVycm9ycyk7XG4gIGNvbnN0IGVycm9yQ291bnQgPSBlcnJvckFycmF5Lmxlbmd0aDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1ZhbGlkIHx8IGVycm9yQ291bnQgPT09IDApIHJldHVybjtcblxuICAgIC8vIHNvcnQgZWxlbWVudHMgYnkgcG9zaXRpb25cbiAgICBjb25zdCBlbGVtZW50c1NvcnRlZCA9IGVycm9yQXJyYXlcbiAgICAgIC5yZWR1Y2UoKHJlc3VsdCwgZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtuYW1lPScke2Vycm9yfSddYCk7XG4gICAgICAgIGlmICghZWxlbWVudCkgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICBjb25zdCBlbFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICByZXN1bHQucHVzaCh7IGVsZW1lbnQsIGVycm9yLCB0b3A6IGVsUmVjdC50b3AgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sIFtdKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEudG9wIC0gYi50b3ApO1xuXG4gICAgaWYgKGVsZW1lbnRzU29ydGVkLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnRcbiAgICAgIC5nZXRFbGVtZW50QnlJZChjb250YWluZXJJZClcbiAgICAgIC5xdWVyeVNlbGVjdG9yKFwiLk11aURyYXdlci1wYXBlclwiKTtcbiAgICBjb25zdCB0YXJnZXQgPSBlbGVtZW50c1NvcnRlZFswXTtcblxuICAgIGlmIChjb250YWluZXI/LmNvbnRhaW5zKHRhcmdldC5lbGVtZW50KSkge1xuICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBvZmZzZXQgb2YgdGhlIHRhcmdldCBlbGVtZW50IHJlbGF0aXZlIHRvIHRoZSBjb250YWluZXJcbiAgICAgIGNvbnN0IGVsZW1PZmZlc3QgPSAxMDA7XG4gICAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9IDUwMDtcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XG4gICAgICAgIHRhcmdldC50b3AgLSBjb250YWluZXJSZWN0LnRvcCArIGNvbnRhaW5lci5zY3JvbGxUb3AgLSBlbGVtT2ZmZXN0O1xuXG4gICAgICAvLyBTY3JvbGwgdGhlIGNvbnRhaW5lciB0byB0aGUgdGFyZ2V0IGVsZW1lbnQncyBwb3NpdGlvblxuICAgICAgc21vb3RoU2Nyb2xsVG8oY29udGFpbmVyLCBzY3JvbGxUb3AsIGFuaW1hdGlvbkR1cmF0aW9uKTsgLy8gNTAwbXMgZHVyYXRpb25cbiAgICB9XG4gIH0sIFtpc1N1Ym1pdHRpbmddKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVNjcm9sbFRvRXJyb3I7XG4iLCJpbXBvcnQgeyBpc1RpY2tldFJlZnVuZGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiQ29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiSW5jb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIkNhbmNlbGxlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJVbmFzc2lnbmVkXCI7XG5cbmV4cG9ydCBjb25zdCB1c2VUaWNrZXREZXRhaWxzID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBnZXRTdGF0dXMgPSAoKSA9PiB7XG4gICAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcbiAgICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG4gICAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuICAgIHJldHVybiB0aWNrZXQub3duZXIuc3RhdHVzO1xuICB9O1xuXG4gIGlmICghdGlja2V0KSByZXR1cm4ge307XG5cbiAgY29uc3Qgc3RhdHVzID0gZ2V0U3RhdHVzKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZSAmJiBzdGF0dXMgIT09IFNUQVRVU19DQU5DRUxMRUQ7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpO1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0ZSA9XG4gICAgdGlja2V0Py50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX2RlbGVnYXRlIHx8XG4gICAgdGlja2V0Py5wcm9tb19jb2RlPy5hbGxvd3NfdG9fZGVsZWdhdGU7XG4gIGNvbnN0IGlzQ29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19DT01QTEVURTtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gc3RhdHVzID09PSBTVEFUVVNfVU5BU1NJR05FRDtcbiAgY29uc3QgaXNJbmNvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfSU5DT01QTEVURTtcbiAgY29uc3QgY2FuUmVhc3NpZ24gPVxuICAgICFpc1VuYXNzaWduZWQgJiZcbiAgICB0aWNrZXQudGlja2V0X3R5cGU/LmFsbG93c190b19yZWFzc2lnbiAmJlxuICAgICghdGlja2V0LnByb21vX2NvZGUgfHwgdGlja2V0LnByb21vX2NvZGU/LmFsbG93c190b19yZWFzc2lnbik7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0dXMsXG4gICAgaXNDb21wbGV0ZSxcbiAgICBpc1VuYXNzaWduZWQsXG4gICAgaXNJbmNvbXBsZXRlLFxuICAgIGlzQWN0aXZlLFxuICAgIGlzUmVmdW5kYWJsZSxcbiAgICBhbGxvd3NEZWxlZ2F0ZSxcbiAgICBjYW5SZWFzc2lnblxuICB9O1xufTtcbiIsImltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBpbml0UmVhY3RJMThuZXh0IH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBMYW5ndWFnZURldGVjdG9yIGZyb20gXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiO1xuaW1wb3J0IGVuIGZyb20gXCIuL2xvY2FsZXMvZW4uanNvblwiO1xuaW1wb3J0IGVzIGZyb20gXCIuL2xvY2FsZXMvZXMuanNvblwiO1xuXG4vLyBpbXBvcnQgQmFja2VuZCBmcm9tICdpMThuZXh0LWh0dHAtYmFja2VuZCc7XG4vLyBkb24ndCB3YW50IHRvIHVzZSB0aGlzP1xuLy8gaGF2ZSBhIGxvb2sgYXQgdGhlIFF1aWNrIHN0YXJ0IGd1aWRlXG4vLyBmb3IgcGFzc2luZyBpbiBsbmcgYW5kIHRyYW5zbGF0aW9ucyBvbiBpbml0XG5cbmkxOG5cbiAgLy8gbG9hZCB0cmFuc2xhdGlvbiB1c2luZyBodHRwIC0+IHNlZSAvcHVibGljL2xvY2FsZXMgKGkuZS4gaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvcmVhY3QtaTE4bmV4dC90cmVlL21hc3Rlci9leGFtcGxlL3JlYWN0L3B1YmxpYy9sb2NhbGVzKVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWh0dHAtYmFja2VuZFxuICAvLyB3YW50IHlvdXIgdHJhbnNsYXRpb25zIHRvIGJlIGxvYWRlZCBmcm9tIGEgcHJvZmVzc2lvbmFsIENETj8gPT4gaHR0cHM6Ly9naXRodWIuY29tL2xvY2l6ZS9yZWFjdC10dXRvcmlhbCNzdGVwLTItLS11c2UtdGhlLWxvY2l6ZS1jZG5cbiAgLy8gLnVzZShCYWNrZW5kKVxuICAvLyBkZXRlY3QgdXNlciBsYW5ndWFnZVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VEZXRlY3RvclxuICAudXNlKExhbmd1YWdlRGV0ZWN0b3IpXG4gIC8vIHBhc3MgdGhlIGkxOG4gaW5zdGFuY2UgdG8gcmVhY3QtaTE4bmV4dC5cbiAgLnVzZShpbml0UmVhY3RJMThuZXh0KVxuICAvLyBpbml0IGkxOG5leHRcbiAgLy8gZm9yIGFsbCBvcHRpb25zIHJlYWQ6IGh0dHBzOi8vd3d3LmkxOG5leHQuY29tL292ZXJ2aWV3L2NvbmZpZ3VyYXRpb24tb3B0aW9uc1xuICAuaW5pdCh7XG4gICAgZmFsbGJhY2tMbmc6IFwiZW5cIixcbiAgICBkZWJ1ZzogZmFsc2UsXG4gICAgcmVzb3VyY2VzOiB7XG4gICAgICBlbjogeyB0cmFuc2xhdGlvbjogZW4gfSxcbiAgICAgIGVzOiB7IHRyYW5zbGF0aW9uOiBlcyB9XG4gICAgfSxcbiAgICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgICBlc2NhcGVWYWx1ZTogZmFsc2UgLy8gbm90IG5lZWRlZCBmb3IgcmVhY3QgYXMgaXQgZXNjYXBlcyBieSBkZWZhdWx0XG4gICAgfVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgaTE4bjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgeyBMT0dPVVRfVVNFUiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFNUQVJUX0xPQURJTkcsXG4gIFNUT1BfTE9BRElORyxcbiAgUkVTRVRfTE9BRElOR1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBSRVNFVF9TVEFURSxcbiAgUkVTRVRfRklMVEVSLFxuICBTRVRfU1RBVEUsXG4gIFNFVF9VU0VSLFxuICBHRVRfVVNFUl9PUkRFUlMsXG4gIEdFVF9NWV9BU1NJR05FRF9USUNLRVRTLFxuICBHRVRfVElDS0VUU19CWV9PUkRFUixcbiAgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCxcbiAgUkVDRUlWRV9USUNLRVQsXG4gIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TLFxuICBVUERBVEVfVElDS0VULFxuICBBU1NJR05fVElDS0VULFxuICBSRVNFVF9BUElfRVJST1IsXG4gIFNFVF9BUElfRVJST1IsXG4gIFJFU0VUX1RJQ0tFVCxcbiAgQ0hBTkdFX0ZJTFRFUixcbiAgQ0hBTkdFX1NPUlQsXG4gIEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSxcbiAgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIsXG4gIEZJTFRFUl9WQVJfREFURSxcbiAgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSxcbiAgRklMVEVSX1ZBUl9GUkVFX1BBSUQsXG4gIEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCxcbiAgRklMVEVSX1ZBUl9QUk9NT0NPREUsXG4gIERFTEVHQVRFX1RJQ0tFVFxufSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBGSVJTVF9QQUdFLCBUQUJTIH0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBoYXNMb2FkZWRBbGxEYXRhIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgREVGQVVMVF9GSUxURVJfU1RBVEUgPSB7XG4gIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfREFURV06IG51bGxcbn07XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7XG4gIHN1bW1pdDogbnVsbCxcbiAgdXNlcjoge30sXG4gIHdpZGdldExvYWRpbmc6IGZhbHNlLFxuICBtZW1iZXJPcmRlcnM6IFtdLFxuICB1c2VyVGlja2V0czogW10sXG4gIGV4dHJhUXVlc3Rpb25zOiBbXSxcbiAgY3VycmVudFRpY2tldDogbnVsbCxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGN1cnJlbnRfdGFiOiBUQUJTLk9SREVSUyxcbiAgc29ydDoge30sXG4gIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gIG9yZGVyc19jdXJyZW50X3BhZ2U6IDAsXG4gIG9yZGVyc19sYXN0X3BhZ2U6IDAsXG4gIG9yZGVyc19wZXJfcGFnZTogNSxcbiAgb3JkZXJzX3RvdGFsOiAwLFxuICB0aWNrZXRfY3VycmVudF9wYWdlOiAwLFxuICB0aWNrZXRfbGFzdF9wYWdlOiAwLFxuICB0aWNrZXRfcGVyX3BhZ2U6IDUsXG4gIHRpY2tldF90b3RhbDogMCxcbiAgdXNlcl90aWNrZXRzX3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlOiAwLFxuICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlOiAwLFxuICBhcGlFcnJvcjogbnVsbFxufTtcblxuY29uc3QgV2lkZ2V0UmVkdWNlciA9IChzdGF0ZSA9IERFRkFVTFRfU1RBVEUsIHsgdHlwZSwgcGF5bG9hZCB9ID0ge30pID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBMT0dPVVRfVVNFUjpcbiAgICBjYXNlIFJFU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIERFRkFVTFRfU1RBVEU7XG4gICAgY2FzZSBTVEFSVF9MT0FESU5HOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGxvYWRpbmc6IHRydWUgfTtcbiAgICBjYXNlIFNUT1BfTE9BRElORzpcbiAgICBjYXNlIFJFU0VUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogZmFsc2UgfTtcbiAgICBjYXNlIFJFU0VUX0FQSV9FUlJPUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogbnVsbCB9O1xuICAgIGNhc2UgUkVTRVRfRklMVEVSOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gICAgICAgIHNvcnQ6IHt9LFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiAxXG4gICAgICB9O1xuICAgIGNhc2UgU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIC4uLnBheWxvYWQgfTtcbiAgICBjYXNlIFNFVF9BUElfRVJST1I6IHtcbiAgICAgIGNvbnN0IHsgdGl0bGUsIGh0bWw6IGJvZHkgfSA9IHBheWxvYWQ7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYXBpRXJyb3I6IHsgdGl0bGUsIGJvZHkgfSB9O1xuICAgIH1cbiAgICBjYXNlIFNFVF9VU0VSOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHVzZXI6IHBheWxvYWQgfTtcbiAgICBjYXNlIENIQU5HRV9GSUxURVI6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBmaWx0ZXI6IHsgLi4uc3RhdGUuZmlsdGVyLCAuLi5wYXlsb2FkIH0gfTtcbiAgICB9XG4gICAgY2FzZSBDSEFOR0VfU09SVDoge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNvcnQ6IHsgLi4ucGF5bG9hZCB9IH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1VTRVJfT1JERVJTOiB7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgaWYgKGhhc0xvYWRlZEFsbERhdGEoY3VycmVudF9wYWdlLCBzdGF0ZS5tZW1iZXJPcmRlcnMsIHRvdGFsKSlcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjb25zdCBtZW1iZXJPcmRlcnMgPVxuICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLnN0YXRlLm1lbWJlck9yZGVycywgLi4uZGF0YV07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnMsXG4gICAgICAgIG9yZGVyc190b3RhbDogdG90YWwsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9NWV9BU1NJR05FRF9USUNLRVRTOiB7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgaWYgKGhhc0xvYWRlZEFsbERhdGEoY3VycmVudF9wYWdlLCBzdGF0ZS51c2VyVGlja2V0cywgdG90YWwpKVxuICAgICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICAgIGNvbnN0IHVzZXJUaWNrZXRzID1cbiAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5zdGF0ZS51c2VyVGlja2V0cywgLi4uZGF0YV07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB1c2VyVGlja2V0cyxcbiAgICAgICAgdXNlcl90aWNrZXRzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlLFxuICAgICAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlOiBsYXN0X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1RJQ0tFVFNfQllfT1JERVI6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgZm9ybWVyT3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZCgobykgPT4gby5pZCA9PT0gZGF0YVswXT8ub3JkZXJfaWQpO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIGZvcm1lck9yZGVyPy5tZW1iZXJUaWNrZXRzLCB0b3RhbCkpXG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5mb3JtZXJPcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV0sXG4gICAgICAgIHRpY2tldHNfcGFnZV9jdXJyZW50OiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfdG90YWw6IHRvdGFsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRDoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgdGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9IHBheWxvYWQ7XG4gICAgICBjb25zdCBvcmRlciA9IG1lbWJlck9yZGVycy5maW5kKFxuICAgICAgICAobykgPT4gby5pZCA9PT0gdGlja2V0c1JlZnVuZFJlcXVlc3RlZFswXT8ub3JkZXJfaWRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzLm1hcChcbiAgICAgICAgKHRpY2tldCkgPT5cbiAgICAgICAgICB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkLmZpbmQoKHRycikgPT4gdHJyLmlkID09PSB0aWNrZXQuaWQpIHx8IHRpY2tldFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6IHVwZGF0ZWRUaWNrZXRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVTRVRfVElDS0VUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogbnVsbCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXQgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TOiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZXh0cmFRdWVzdGlvbnM6IGRhdGEgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXREYXRhID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSBvcmRlci5tZW1iZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgaWYgKHRpY2tldC5pZCA9PT0gdGlja2V0RGF0YS5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRpY2tldERhdGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aWNrZXQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG1lbWJlck9yZGVyczogbmV3T3JkZXJzIH07XG4gICAgfVxuICAgIGNhc2UgREVMRUdBVEVfVElDS0VUOlxuICAgIGNhc2UgQVNTSUdOX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gb3JkZXIubWVtYmVyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgIGlmICh0aWNrZXQuaWQgPT09IHRpY2tldERhdGEuaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aWNrZXREYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGlja2V0O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXREYXRhLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycyB9O1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoe1xuICBjbGllbnRJZCxcbiAgbG9naW5VcmwsXG4gIHN1bW1pdCxcbiAgYXBpQmFzZVVybCxcbiAgdXBkYXRlUHJvZmlsZVxufSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB1cGRhdGVQcm9maWxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5pdExvZ091dCxcbiAgZ2V0QWNjZXNzVG9rZW5cbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L3JlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NUb2tlblNhZmVseSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0OjpnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgIGluaXRMb2dPdXQoKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgfVxufTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgU1RFUF9PTkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNURVBfVFdPID0gMjtcbmV4cG9ydCBjb25zdCBTVEVQX1RIUkVFID0gMztcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkcgPSBcIlNUQVRVU19SRUZVTkRfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRUQgPSBcIlNUQVRVU19SRUZVTkRfQVBQUk9WRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEID0gXCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDID0gXCJSZXF1ZXN0ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDID0gXCJBcHByb3ZlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMgPSBcIlJlamVjdGVkXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0NPREVTID0ge1xuICA0MDE6IDQwMSxcbiAgNDAzOiA0MDEsXG4gIDQxMjogNDAxLFxuICA1MDA6IDUwMFxufTtcblxuZXhwb3J0IGNvbnN0IFRBQlMgPSB7XG4gIE9SREVSUzogXCJPUkRFUlNcIixcbiAgVElDS0VUUzogXCJUSUNLRVRTXCJcbn07XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBMQVNUX0hPVVJfT0ZfMjRfSE9VUixcbiAgTEFTVF9NSU5VVEVfT0ZfSE9VUixcbiAgTUlMTElTRUNfVE9fU0VDLFxuICBGSVJTVF9QQUdFXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3VycmVuY3kgPSAodmFsdWUsIHsgbG9jYWxlID0gXCJlbi1VU1wiLCAuLi5vcHRpb25zIH0pID0+IHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgY3VycmVuY3k6IFwiVVNEXCIsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMlxuICB9O1xuXG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHtcbiAgICBzdHlsZTogXCJjdXJyZW5jeVwiLFxuICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG5cbiAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZERhdGUgPSAoZGF0ZXRpbWUsIHRpbWVab25lKSA9PiB7XG4gIGlmICh0aW1lWm9uZSlcbiAgICByZXR1cm4gbW9tZW50XG4gICAgICAudHooZGF0ZXRpbWUgKiBNSUxMSVNFQ19UT19TRUMsIHRpbWVab25lKVxuICAgICAgLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG5cbiAgcmV0dXJuIG1vbWVudC51bml4KGRhdGV0aW1lKS5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZU9yZGVyVG90YWxzID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGlmICghb3JkZXIgfHwgIXN1bW1pdCkgcmV0dXJuIHt9O1xuICBjb25zdCB0aWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM7XG4gIGlmICghdGlja2V0cykgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHsgcmVmdW5kZWRfYW1vdW50LCBkaXNjb3VudF9hbW91bnQsIHRheGVzX2Ftb3VudCwgYW1vdW50IH0gPSBvcmRlcjtcbiAgY29uc3QgeyB0aWNrZXRfdHlwZXMgfSA9IHN1bW1pdDtcblxuICBjb25zdCB0aWNrZXRTdW1tYXJ5ID0gW107XG4gIGxldCBwdXJjaGFzZVRpY2tldFRvdGFsID0gMDtcblxuICBjb25zdCBjdXJyZW5jeU9iamVjdCA9IHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH07XG5cbiAgT2JqZWN0LmtleXMob3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlKS5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHRpY2tldFR5cGUgPSB0aWNrZXRfdHlwZXM/LmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIGlmICghdGlja2V0VHlwZSkgcmV0dXJuIG51bGw7XG4gICAgdGlja2V0U3VtbWFyeS5wdXNoKHtcbiAgICAgIHRpY2tldF90eXBlX2lkOiB0aWNrZXRUeXBlLmlkLFxuICAgICAgdGlja2V0X3R5cGU6IHRpY2tldFR5cGUsXG4gICAgICBuYW1lOiB0aWNrZXQsXG4gICAgICBxdHk6IG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdXG4gICAgfSk7XG4gICAgcHVyY2hhc2VUaWNrZXRUb3RhbCArPVxuICAgICAgdGlja2V0VHlwZS5jb3N0ICogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF07XG5cbiAgICByZXR1cm4gdGlja2V0U3VtbWFyeTtcbiAgfSk7XG5cbiAgY29uc3QgcHVyY2hhc2VUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVGlja2V0VG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICBjb25zdCBkaXNjb3VudFRvdGFsID0gZm9ybWF0Q3VycmVuY3koZGlzY291bnRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHJlZnVuZFRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmVmdW5kZWRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHRheGVzVG90YWwgPSBmb3JtYXRDdXJyZW5jeSh0YXhlc19hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgYW1vdW50VG90YWwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3JkZXIsIFwiYW1vdW50XCIpXG4gICAgPyBmb3JtYXRDdXJyZW5jeShhbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIDogZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIHJldHVybiB7XG4gICAgZGlzY291bnRUb3RhbCxcbiAgICByZWZ1bmRUb3RhbCxcbiAgICB0YXhlc1RvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmRlclRpY2tldHMgPSAobWVtYmVyT3JkZXJzLCBvcmRlcklkKSA9PiB7XG4gIGNvbnN0IG9yZGVycyA9IG1lbWJlck9yZGVycy5maWx0ZXIoKG8pID0+IG8uaWQgPT09IG9yZGVySWQpO1xuICByZXR1cm4gb3JkZXJzWzBdPy5tZW1iZXJUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyA9ICh0cykgPT4ge1xuICBjb25zdCBsb3dlciA9IHRzLnNldEhvdXJzKDAsIDAsIDAsIDApIC8gTUlMTElTRUNfVE9fU0VDO1xuICBjb25zdCB1cHBlciA9XG4gICAgdHMuc2V0SG91cnMoTEFTVF9IT1VSX09GXzI0X0hPVVIsIExBU1RfTUlOVVRFX09GX0hPVVIsIDAsIDApIC9cbiAgICBNSUxMSVNFQ19UT19TRUM7XG4gIHJldHVybiB7XG4gICAgbG93ZXIsXG4gICAgdXBwZXJcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q3VycmVudFRpbWUgPSAoKSA9PlxuICBNYXRoLnJvdW5kKCtuZXcgRGF0ZSgpIC8gTUlMTElTRUNfVE9fU0VDKTtcblxuZXhwb3J0IGNvbnN0IGdldE5vdyA9ICgpID0+IChkaXNwYXRjaCwgZ2V0U3RhdGUpID0+IHtcbiAgY29uc3QgeyB0aW1lclN0YXRlIH0gPSBnZXRTdGF0ZSgpO1xuICByZXR1cm4gdGltZXJTdGF0ZT8ubm93VXRjID09IG51bGwgPyBkZWZhdWx0Q3VycmVudFRpbWUoKSA6IHRpbWVyU3RhdGU/Lm5vd1V0Yztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VOb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICByZXR1cm4gZGlzcGF0Y2goZ2V0Tm93KCkpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gY3VycmVudFBhZ2VcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcGFyYW0gdG90YWxcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3QgaGFzTG9hZGVkQWxsRGF0YSA9IChjdXJyZW50UGFnZSwgZGF0YSwgdG90YWwpID0+IHtcbiAgbGV0IHJlcyA9IGZhbHNlO1xuICBjb25zdCBkYXRhTGVuZ3RoID0gQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEubGVuZ3RoIDogMDtcbiAgLy8gd2UgYWxyZWFkeSBsb2FkZWQgYWxsICBkYXRhICggZmlyc3QgcGFnZSBpcyBhbHdheXMgcmVsb2FkZWQgaXQgKVxuICBpZiAoY3VycmVudFBhZ2UgPiBGSVJTVF9QQUdFICYmIGRhdGFMZW5ndGggPiAwICYmIGRhdGFMZW5ndGggPT09IHRvdGFsKVxuICAgIHJlcyA9IHRydWU7XG4gIHJldHVybiByZXM7XG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9EQVkgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFBhc3QgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHJlYXNzaWduX2RhdGUgPVxuICAgIHN1bW1pdD8ucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcblxuICByZXR1cm4gbm93ID4gcmVhc3NpZ25fZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFN0YXJ0ZWQgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQuc3RhcnRfZGF0ZSA8IG5vdztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXREYXlzRGlmZiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCBzdGFydERheSA9IG1vbWVudChzdW1taXQuc3RhcnRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBlbmREYXkgPSBtb21lbnQoc3VtbWl0LmVuZF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXMgPSBlbmREYXk/LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydERheSxcbiAgICBlbmREYXksXG4gICAgZGF5c1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyBzdGFydERheSwgZW5kRGF5LCBkYXlzIH0gPSBnZXRTdW1taXREYXlzRGlmZihzdW1taXQpO1xuICBpZiAoIXN0YXJ0RGF5IHx8ICFlbmREYXkpIHJldHVybiBudWxsO1xuICBsZXQgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGxldCBmb3JtYXRFbmREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGlmIChzdGFydERheS55ZWFyKCkgPT09IGVuZERheS55ZWFyKCkpIGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERFwiO1xuICBpZiAoc3RhcnREYXkubW9udGgoKSA9PT0gZW5kRGF5Lm1vbnRoKCkpIGZvcm1hdEVuZERhdGUgPSBcIkRELCBZWVlZXCI7XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gc3RhcnREYXkuZm9ybWF0KGZvcm1hdFN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGVuZERhdGUgPSBlbmREYXkuZm9ybWF0KGZvcm1hdEVuZERhdGUpO1xuXG4gIGlmIChkYXlzID4gT05FX0RBWSkgcmV0dXJuIGAke3N0YXJ0RGF0ZX0gLSAke2VuZERhdGV9YDtcblxuICByZXR1cm4gc3RhcnREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdExvY2F0aW9uID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbG9jYXRpb24gPSBzdW1taXQubG9jYXRpb25zPy5maW5kKFxuICAgIChsKSA9PiBsLmNsYXNzX25hbWUgPT09IFwiU3VtbWl0VmVudWVcIiAmJiBsLmlzX21haW4gPT09IHRydWVcbiAgKTtcblxuICBpZiAoIWxvY2F0aW9uKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gYCR7bG9jYXRpb24uY2l0eX0sICR7bG9jYXRpb24uY291bnRyeX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVN1bW1pdERldGFpbHMgPSAoeyBzdW1taXQgfSkgPT4ge1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcblxuICBpZiAoIXN1bW1pdCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gZ2V0U3VtbWl0TG9jYXRpb24oc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZFJlYXNzaWduRGF0ZSA9IG1vbWVudC50eihcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8udGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUgPSBnZXRTdW1taXREYXlzRGlmZihcbiAgICBub3csXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/Lm5hbWVcbiAgKTtcblxuICBjb25zdCBpc1Bhc3QgPSBjaGVja1N1bW1pdFBhc3Qoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1N0YXJ0ZWQgPSBjaGVja1N1bW1pdFN0YXJ0ZWQoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHN1bW1pdD8ubmFtZSxcbiAgICBub3csXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybWF0dGVkRGF0ZSxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgaXNQYXN0LFxuICAgIGlzU3RhcnRlZCxcbiAgICBpc1JlYXNzaWduYWJsZVxuICB9O1xufTtcbiIsImltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHtcbiAgU1RBVFVTX0NBTkNFTExFRCxcbiAgU1RBVFVTX0NPTVBMRVRFLFxuICBTVEFUVVNfSU5DT01QTEVURSxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HLFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURUQsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMsXG4gIFNUQVRVU19VTkFTU0lHTkVEXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBjaGVja0lmVmFsdWVNYXRjaCxcbiAgZ2V0VHlwZUluaXRpYWxWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3Qgc3RhdHVzRGF0YSA9IHtcbiAgW1NUQVRVU19VTkFTU0lHTkVEXToge1xuICAgIHR5cGU6IFNUQVRVU19VTkFTU0lHTkVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMudW5hc3NpZ25lZFwiKVxuICB9LFxuICBbU1RBVFVTX0lOQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0lOQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5pbmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DQU5DRUxMRURdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NBTkNFTExFRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNhbmNlbGxlZFwiKVxuICB9XG59O1xuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0tleSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcblxuICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG5cbiAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJDb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfQ09NUExFVEU7XG5cbiAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0RhdGEgPSAodGlja2V0LCBpc1N1bW1pdFBhc3QpID0+XG4gIHN0YXR1c0RhdGFbZ2V0VGlja2V0U3RhdHVzS2V5KHRpY2tldCwgaXNTdW1taXRQYXN0KV07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRSb2xlID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5iYWRnZSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgeyBmZWF0dXJlcyB9ID0gdGlja2V0LmJhZGdlO1xuXG4gIGlmIChmZWF0dXJlcy5sZW5ndGggPiAwKVxuICAgIHJldHVybiBmZWF0dXJlcy5tYXAoKGZlYXR1cmUpID0+IGZlYXR1cmUubmFtZSkuam9pbihcIiwgXCIpO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFR5cGUgPSAodGlja2V0LCBzdW1taXQpID0+XG4gIHN1bW1pdC50aWNrZXRfdHlwZXMuZmluZCgodHlwZSkgPT4gdHlwZS5pZCA9PT0gdGlja2V0LnRpY2tldF90eXBlX2lkKTtcblxuZXhwb3J0IGNvbnN0IGlzVGlja2V0UmVmdW5kYWJsZSA9ICh0aWNrZXQpID0+XG4gIHRpY2tldD8uZmluYWxfYW1vdW50ID4gMCAmJlxuICB0aWNrZXQ/Lm5ldF9zZWxsaW5nX2Nvc3QgPiB0aWNrZXQucmVmdW5kZWRfYW1vdW50ICYmXG4gICF0aWNrZXQ/LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICk7XG5cbmV4cG9ydCBjb25zdCB0aWNrZXRzUmVmdW5kYWJsZSA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkpLmxlbmd0aCB8fCAwO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PlxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKTtcbmV4cG9ydCBjb25zdCBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+IHtcbiAgY29uc3QgYWxsVGlja2V0cyA9IFtdO1xuICB0aWNrZXRzPy5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgICAgKVxuICAgICkge1xuICAgICAgYWxsVGlja2V0cy5wdXNoKHRpY2tldCk7XG4gICAgfVxuICAgIHJldHVybiB0aWNrZXQ7XG4gIH0pO1xuICByZXR1cm4gYWxsVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9BUFBST1ZFRDtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEO1xuICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBzdGF0dXMgPSBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyh0aWNrZXQpO1xuICBsZXQgc3RhdHVzQ29sb3IgPSBcIlwiO1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9QRU5ESU5HOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9BUFBST1ZFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJhcHByb3ZlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInJlamVjdGVkXCI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgfVxuICByZXR1cm4gc3RhdHVzQ29sb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbGlkYXRpb24gPSAodHlwZSwgbmFtZSwgaXNSZXF1aXJlZCkgPT4ge1xuICBsZXQgc2NoZW1hO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5ib29sKCkub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5hcnJheSgpLm9mKHl1cC5zdHJpbmcoKSk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgaWYgKGlzUmVxdWlyZWQpIHNjaGVtYSA9IHNjaGVtYS5taW4oMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBpZiAoaXNSZXF1aXJlZCkge1xuICAgIHNjaGVtYSA9IHNjaGVtYS5yZXF1aXJlZChgJHtuYW1lfSBpcyByZXF1aXJlZGApO1xuICB9XG5cbiAgcmV0dXJuIHNjaGVtYTtcbn07XG5cbmNvbnN0IHBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIgPSAoXG4gIHEsXG4gIGFuc3dlcnMsXG4gIGFuc3dlcixcbiAgaW5pdGlhbFZhbHVlcyxcbiAgb25seVJlbGV2YW50XG4pID0+IHtcbiAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgcS5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgY29uc3QgeyBzdWJfcXVlc3Rpb24sIGFuc3dlcl92YWx1ZXMgfSA9IHJ1bGU7XG4gICAgICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoc3ViX3F1ZXN0aW9uLm5hbWUsIHN1Yl9xdWVzdGlvbi5pZCk7XG4gICAgICBjb25zdCBzdWJBbnN3ZXIgPSBhbnN3ZXJzW3N1YlF1ZXN0aW9uU2x1Z107XG4gICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKGFuc3dlciwgYW5zd2VyX3ZhbHVlcyk7XG5cbiAgICAgIGlmICghb25seVJlbGV2YW50IHx8IG1hdGNoKSB7XG4gICAgICAgIGluaXRpYWxWYWx1ZXNbc3ViUXVlc3Rpb25TbHVnXSA9XG4gICAgICAgICAgc3ViQW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUoc3ViX3F1ZXN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgcGFyc2VTdWJRdWVzdGlvbkFuc3dlcihcbiAgICAgICAgc3ViX3F1ZXN0aW9uLFxuICAgICAgICBhbnN3ZXJzLFxuICAgICAgICBzdWJBbnN3ZXIsXG4gICAgICAgIGluaXRpYWxWYWx1ZXMsXG4gICAgICAgIG9ubHlSZWxldmFudFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQW5zd2VycyA9IChcbiAgb3duZXIsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBhbnN3ZXJzLFxuICBpbmNsdWRlQXR0ZW5kZWVJbmZvLFxuICBpbmNsdWRlRGlzY2xhaW1lcixcbiAgb25seVJlbGV2YW50ID0gZmFsc2VcbikgPT4ge1xuICBjb25zdCBpbml0aWFsVmFsdWVzID0ge307XG5cbiAgaWYgKGluY2x1ZGVBdHRlbmRlZUluZm8pIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSB8fCBvd25lci5lbWFpbCB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gfHwgb3duZXIuZmlyc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdIHx8IG93bmVyLmxhc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSB8fCBvd25lci5jb21wYW55O1xuICB9XG5cbiAgaWYgKGluY2x1ZGVEaXNjbGFpbWVyKSB7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSB8fFxuICAgICAgb3duZXIuZGlzY2xhaW1lcl9hY2NlcHRlZDtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICBjb25zdCBhbnN3ZXIgPSBhbnN3ZXJzW3F1ZXN0aW9uU2x1Z107XG4gICAgaW5pdGlhbFZhbHVlc1txdWVzdGlvblNsdWddID0gYW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUocSk7XG5cbiAgICBwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyKHEsIGFuc3dlcnMsIGFuc3dlciwgaW5pdGlhbFZhbHVlcywgb25seVJlbGV2YW50KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGluaXRpYWxWYWx1ZXM7XG59O1xuXG5jb25zdCBidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYSA9IChxdWVzdGlvblNsdWcsIHJ1bGUsIHNjaGVtYSkgPT4ge1xuICBjb25zdCBzdWJRdWVzdGlvbiA9IHJ1bGUuc3ViX3F1ZXN0aW9uO1xuICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoc3ViUXVlc3Rpb24ubmFtZSwgc3ViUXVlc3Rpb24uaWQpO1xuXG4gIHNjaGVtYVtzdWJRdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24oXG4gICAgc3ViUXVlc3Rpb24udHlwZSxcbiAgICBzdWJRdWVzdGlvbi5uYW1lLFxuICAgIGZhbHNlXG4gIClcbiAgICAubnVsbGFibGUoKVxuICAgIC53aGVuKHF1ZXN0aW9uU2x1Zywge1xuICAgICAgaXM6IChxdWVzdGlvbkFucykgPT4ge1xuICAgICAgICBjb25zdCBhbnNWYWx1ZU1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goXG4gICAgICAgICAgcXVlc3Rpb25BbnMsXG4gICAgICAgICAgcnVsZS5hbnN3ZXJfdmFsdWVzXG4gICAgICAgICk7XG4gICAgICAgIC8vIGNoZWNrIGlmIHF1ZXN0aW9uIGlzIHZpc2libGUgdG8gYWRkIHZhbGlkYXRpb25cbiAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICAgICBgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmBcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGFuc1ZhbHVlTWF0Y2ggJiYgaXNWaXNpYmxlO1xuICAgICAgfSxcbiAgICAgIHRoZW46IChzY2gpID0+IHtcbiAgICAgICAgaWYgKHN1YlF1ZXN0aW9uLnR5cGUgPT09IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgICAgIHJldHVybiBzY2gubWluKDEpLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfcXVlc3Rpb25cIikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzY2gucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgaWYgKHN1YlF1ZXN0aW9uLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgIHN1YlF1ZXN0aW9uLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChzdWJSdWxlKSA9PiB7XG4gICAgICBidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYShzdWJRdWVzdGlvblNsdWcsIHN1YlJ1bGUsIHNjaGVtYSk7XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFZhbGlkYXRpb25TY2hlbWEgPSAoXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBpbmNsdWRlQXR0ZW5kZWVJbmZvLFxuICBkaXNjbGFpbWVyTWFuZGF0b3J5XG4pID0+IHtcbiAgY29uc3Qgc2NoZW1hID0ge307XG5cbiAgaWYgKGluY2x1ZGVBdHRlbmRlZUluZm8pIHtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgLmVtYWlsKGkxOG4udChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uZW1haWwucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldID0geXVwLmxhenkoKHZhbHVlKSA9PlxuICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiXG4gICAgICAgID8geXVwXG4gICAgICAgICAgICAub2JqZWN0KClcbiAgICAgICAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmNvbXBhbnkucmVxdWlyZWRcIikpXG4gICAgICAgICAgICAudHlwZUVycm9yKGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfZmllbGRcIikpXG4gICAgICAgIDogeXVwLnN0cmluZygpLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICApO1xuICB9XG5cbiAgaWYgKGRpc2NsYWltZXJNYW5kYXRvcnkpIHtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSA9IHl1cFxuICAgICAgLmJvb2woKVxuICAgICAgLm9uZU9mKFt0cnVlXSwgaTE4bi50KFwidmFsaWRhdGlvbi5jaGVja2JveC5yZXF1aXJlZFwiKSk7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgeyBpZCwgbmFtZSwgdHlwZSwgbWFuZGF0b3J5LCBzdWJfcXVlc3Rpb25fcnVsZXMgfSA9IHE7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKG5hbWUsIGlkKTtcbiAgICBzY2hlbWFbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKHR5cGUsIG5hbWUsIG1hbmRhdG9yeSk7XG5cbiAgICBpZiAoc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBzdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYShxdWVzdGlvblNsdWcsIHJ1bGUsIHNjaGVtYSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB5dXAub2JqZWN0KHNjaGVtYSk7XG59O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNvcHlJY29uX19fbEkzZVFcIjtcbnZhciBfMiA9IFwicmV2ZXJzZWRfX196SnptRFwiO1xudmFyIF8zID0gXCJ0cnVuY2F0ZWRfX19qV1NuVVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fbVZQaVJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY29weUljb25cIiwgXzIgYXMgXCJyZXZlcnNlZFwiLCBfMyBhcyBcInRydW5jYXRlZFwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZV9fX214RUtXXCI7XG52YXIgXzIgPSBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lcl9fX080c1NzXCI7XG52YXIgXzMgPSBcImNhbGVuZGFyRGlzcGxheV9fX0YzbnVLXCI7XG52YXIgXzQgPSBcImNsZWFuQnV0dG9uX19fcXFEdlVcIjtcbnZhciBfNSA9IFwiY29udGFpbmVyX19fUWVRWV9cIjtcbnZhciBfNiA9IFwiZGF0ZVBpY2tlckNvbnRhaW5lcl9fX1o0Mm13XCI7XG52YXIgXzcgPSBcImRhdGVwaWNrZXJDbG9zZV9fX1RaN2tKXCI7XG52YXIgXzggPSBcImZpbHRlckNoZWNrYm94Q29udGFpbmVyX19fa1VuVzlcIjtcbnZhciBfOSA9IFwiZmlsdGVyQ29udGFpbmVyX19fcnJxcDlcIjtcbnZhciBfYSA9IFwiZmlsdGVyRGF0ZUxhYmVsX19fSmdiY3NcIjtcbnZhciBfYiA9IFwiZmlsdGVySWNvbl9fX2lpT3pvXCI7XG52YXIgX2MgPSBcImZpbHRlckxhYmVsX19fc2taUDdcIjtcbnZhciBfZCA9IFwiZmlsdGVyTGlzdENvbnRhaW5lcl9fX0lEcmxTXCI7XG52YXIgX2UgPSBcImZpbHRlck51bUFjdGl2ZV9fX2ttRUVLXCI7XG52YXIgX2YgPSBcImZpbHRlclNvcnRDb250YWluZXJfX19uaE5Kc1wiO1xudmFyIF8xMCA9IFwibGFiZWxfX19MQW1lX1wiO1xudmFyIF8xMSA9IFwic2hvd0ZpbHRlckxpc3RfX19JVzR4R1wiO1xudmFyIF8xMiA9IFwic29ydENvbnRhaW5lcl9fX3NiNUJkXCI7XG52YXIgXzEzID0gXCJzb3J0SWNvbl9fX2NfWFppXCI7XG52YXIgXzE0ID0gXCJzb3J0TGFiZWxfX19kWGlNeVwiO1xudmFyIF8xNSA9IFwic29ydExpc3RDb250YWluZXJfX19QcDJYZ1wiO1xudmFyIF8xNiA9IFwidGl0bGVXcmFwcGVyX19fUDZtUHVcIjtcbmV4cG9ydCB7IF8xIGFzIFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZVwiLCBfMiBhcyBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lclwiLCBfMyBhcyBcImNhbGVuZGFyRGlzcGxheVwiLCBfNCBhcyBcImNsZWFuQnV0dG9uXCIsIF81IGFzIFwiY29udGFpbmVyXCIsIF82IGFzIFwiZGF0ZVBpY2tlckNvbnRhaW5lclwiLCBfNyBhcyBcImRhdGVwaWNrZXJDbG9zZVwiLCBfOCBhcyBcImZpbHRlckNoZWNrYm94Q29udGFpbmVyXCIsIF85IGFzIFwiZmlsdGVyQ29udGFpbmVyXCIsIF9hIGFzIFwiZmlsdGVyRGF0ZUxhYmVsXCIsIF9iIGFzIFwiZmlsdGVySWNvblwiLCBfYyBhcyBcImZpbHRlckxhYmVsXCIsIF9kIGFzIFwiZmlsdGVyTGlzdENvbnRhaW5lclwiLCBfZSBhcyBcImZpbHRlck51bUFjdGl2ZVwiLCBfZiBhcyBcImZpbHRlclNvcnRDb250YWluZXJcIiwgXzEwIGFzIFwibGFiZWxcIiwgXzExIGFzIFwic2hvd0ZpbHRlckxpc3RcIiwgXzEyIGFzIFwic29ydENvbnRhaW5lclwiLCBfMTMgYXMgXCJzb3J0SWNvblwiLCBfMTQgYXMgXCJzb3J0TGFiZWxcIiwgXzE1IGFzIFwic29ydExpc3RDb250YWluZXJcIiwgXzE2IGFzIFwidGl0bGVXcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNhbmNlbEJ0bl9fX3FEZXhoXCI7XG52YXIgXzIgPSBcImZvb3Rlcl9fX1NONzB5XCI7XG52YXIgXzMgPSBcInNhdmVCdG5fX19uYlU2Y1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjYW5jZWxCdG5cIiwgXzIgYXMgXCJmb290ZXJcIiwgXzMgYXMgXCJzYXZlQnRuXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImVycm9yTGFiZWxfX19ub2N5WFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJlcnJvckxhYmVsXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm15T3JkZXJzV3JhcHBlcl9fX0hKbXlzXCI7XG52YXIgXzIgPSBcIm5vT3JkZXJzRm91bmRfX19EUndnb1wiO1xudmFyIF8zID0gXCJub09yZGVyc0ljb25XcmFwcGVyX19fdFBUbVlcIjtcbmV4cG9ydCB7IF8xIGFzIFwibXlPcmRlcnNXcmFwcGVyXCIsIF8yIGFzIFwibm9PcmRlcnNGb3VuZFwiLCBfMyBhcyBcIm5vT3JkZXJzSWNvbldyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwib3JkZXJEZXRhaWxzTW1vdW50X19fcjNrUkFcIjtcbnZhciBfMiA9IFwib3JkZXJEZXRhaWxzVGlja2V0c19fX200SWpLXCI7XG52YXIgXzMgPSBcIm9yZGVyU3VtbWFyeUJ1dHRvbl9fX3V4amh0XCI7XG52YXIgXzQgPSBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9fX19fUkJYRVwiO1xudmFyIF81ID0gXCJvcmRlclN1bW1hcnlUYWJsZV9fX1lEbnhWXCI7XG52YXIgXzYgPSBcIm9yZGVyU3VtbWFyeVdyYXBwZXJfX19Sd0lFUlwiO1xudmFyIF83ID0gXCJyZWZ1bmREaXNhYmxlZF9fX2p2cmszXCI7XG5leHBvcnQgeyBfMSBhcyBcIm9yZGVyRGV0YWlsc01tb3VudFwiLCBfMiBhcyBcIm9yZGVyRGV0YWlsc1RpY2tldHNcIiwgXzMgYXMgXCJvcmRlclN1bW1hcnlCdXR0b25cIiwgXzQgYXMgXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvXCIsIF81IGFzIFwib3JkZXJTdW1tYXJ5VGFibGVcIiwgXzYgYXMgXCJvcmRlclN1bW1hcnlXcmFwcGVyXCIsIF83IGFzIFwicmVmdW5kRGlzYWJsZWRcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYXNzaWduVGlja2V0QnV0dG9uX19fenpMc2NcIjtcbnZhciBfMiA9IFwiYXNzaWduVG9NZVRleHRfX19aUGFleFwiO1xudmFyIF8zID0gXCJhc3NpZ25lZEJ5VGV4dF9fX2JOWjd6XCI7XG52YXIgXzQgPSBcImFzc2lnbmVkVG9NZURlc19fX0dqRmtWXCI7XG52YXIgXzUgPSBcImFzc2lnbmVkVG9NZVdyYXBwZXJfX19VeGMyeVwiO1xudmFyIF82ID0gXCJiYWRnZUZlYXR1cmVfX19BMkxNVlwiO1xudmFyIF83ID0gXCJiYWRnZUZlYXR1cmVXcmFwcGVyX19fSVFMTlBcIjtcbnZhciBfOCA9IFwiY2hlY2tib3hfX19YWkpwYlwiO1xudmFyIF85ID0gXCJkaXNhYmxlZFJlZnVuZF9fX1NmZmw3XCI7XG52YXIgX2EgPSBcImRpc3BsYXlfbm9uZV9fX0NxcEwzXCI7XG52YXIgX2IgPSBcImxhYmVsX19felhEV3pcIjtcbnZhciBfYyA9IFwibm9PcmRlcnNJY29uV3JhcHBlcl9fX2VmeXJwXCI7XG52YXIgX2QgPSBcIm5vVGlja2V0c0ZvdW5kX19fakxvY29cIjtcbnZhciBfZSA9IFwib3JkZXJUaWNrZXRDb250YWluZXJfX19aSkx6a1wiO1xudmFyIF9mID0gXCJvcmRlclRpY2tldEluZm9fX19nZW1xQlwiO1xudmFyIF8xMCA9IFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyX19fX3A2NlZcIjtcbnZhciBfMTEgPSBcIm9yZGVyV3JhcHBlcl9fX3lEQkFvXCI7XG52YXIgXzEyID0gXCJyZWFzc2lnbkJ1dHRvbl9fX1Jvak01XCI7XG52YXIgXzEzID0gXCJyZWZ1bmRCdXR0b25zX19fakRsNEhcIjtcbnZhciBfMTQgPSBcInJlZnVuZE1vZGFsX19fRXFnUEZcIjtcbnZhciBfMTUgPSBcInNlbGVjdGVkX19fSFdHTmNcIjtcbnZhciBfMTYgPSBcInRhYkJ1dHRvbnNfX194VHlKQVwiO1xudmFyIF8xNyA9IFwidGlja2V0QWN0aW9uQnV0dG9uc19fX3JwU01RXCI7XG52YXIgXzE4ID0gXCJ0aWNrZXRMaXN0Q29udGFpbmVyX19fY2ZtcnJcIjtcbnZhciBfMTkgPSBcInRpY2tldE5vX19fYTJpTTlcIjtcbnZhciBfMWEgPSBcInRpY2tldE93bmVyRW1haWxfX19adDRPRVwiO1xudmFyIF8xYiA9IFwidGlja2V0VGlja2V0VHlwZV9fX1pxX2YwXCI7XG52YXIgXzFjID0gXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uX19fSEY2SW1cIjtcbnZhciBfMWQgPSBcInZpZXdNb3JlQnV0dG9uX19fS18xelRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXNzaWduVGlja2V0QnV0dG9uXCIsIF8yIGFzIFwiYXNzaWduVG9NZVRleHRcIiwgXzMgYXMgXCJhc3NpZ25lZEJ5VGV4dFwiLCBfNCBhcyBcImFzc2lnbmVkVG9NZURlc1wiLCBfNSBhcyBcImFzc2lnbmVkVG9NZVdyYXBwZXJcIiwgXzYgYXMgXCJiYWRnZUZlYXR1cmVcIiwgXzcgYXMgXCJiYWRnZUZlYXR1cmVXcmFwcGVyXCIsIF84IGFzIFwiY2hlY2tib3hcIiwgXzkgYXMgXCJkaXNhYmxlZFJlZnVuZFwiLCBfYSBhcyBcImRpc3BsYXlfbm9uZVwiLCBfYiBhcyBcImxhYmVsXCIsIF9jIGFzIFwibm9PcmRlcnNJY29uV3JhcHBlclwiLCBfZCBhcyBcIm5vVGlja2V0c0ZvdW5kXCIsIF9lIGFzIFwib3JkZXJUaWNrZXRDb250YWluZXJcIiwgX2YgYXMgXCJvcmRlclRpY2tldEluZm9cIiwgXzEwIGFzIFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyXCIsIF8xMSBhcyBcIm9yZGVyV3JhcHBlclwiLCBfMTIgYXMgXCJyZWFzc2lnbkJ1dHRvblwiLCBfMTMgYXMgXCJyZWZ1bmRCdXR0b25zXCIsIF8xNCBhcyBcInJlZnVuZE1vZGFsXCIsIF8xNSBhcyBcInNlbGVjdGVkXCIsIF8xNiBhcyBcInRhYkJ1dHRvbnNcIiwgXzE3IGFzIFwidGlja2V0QWN0aW9uQnV0dG9uc1wiLCBfMTggYXMgXCJ0aWNrZXRMaXN0Q29udGFpbmVyXCIsIF8xOSBhcyBcInRpY2tldE5vXCIsIF8xYSBhcyBcInRpY2tldE93bmVyRW1haWxcIiwgXzFiIGFzIFwidGlja2V0VGlja2V0VHlwZVwiLCBfMWMgYXMgXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uXCIsIF8xZCBhcyBcInZpZXdNb3JlQnV0dG9uXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIkNUQUJ1dHRvbldyYXBwZXJfX19LZ3E2Z1wiO1xudmFyIF8yID0gXCJhY3Rpb25CdXR0b25zX19fdTdtUFNcIjtcbnZhciBfMyA9IFwiYXBwcm92ZWRfX19zeEVKV1wiO1xudmFyIF80ID0gXCJiYWRnZUZlYXR1cmVfX190TGhFcFwiO1xudmFyIF81ID0gXCJiYWRnZUZlYXR1cmVXcmFwcGVyX19fXzlHYkRcIjtcbnZhciBfNiA9IFwiYnV0dG9uUGlsbF9fX0xlc2F6XCI7XG52YXIgXzcgPSBcImNhbmNlbEJ1dHRvbl9fX3lmaFliXCI7XG52YXIgXzggPSBcImNvbnRpbnVlQnV0dG9uX19fTnlYM3NcIjtcbnZhciBfOSA9IFwiZGVsZXRlSWNvbl9fX0ZTd3llXCI7XG52YXIgX2EgPSBcInBlbmRpbmdfX19hRWJXd1wiO1xudmFyIF9iID0gXCJyZWZ1bmREZXRhaWxfX19jUTI4VlwiO1xudmFyIF9jID0gXCJyZWZ1bmRFcnJvck1zZ19fX0FhaHpyXCI7XG52YXIgX2QgPSBcInJlZnVuZFN1Y2Nlc3NmdWxfX196ckRRWVwiO1xudmFyIF9lID0gXCJyZWZ1bmRUZXh0X19fYUVuTDlcIjtcbnZhciBfZiA9IFwicmVmdW5kVGlja2V0QXR0ZW5kZWVfX19RWENqTVwiO1xudmFyIF8xMCA9IFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyX19feWE2MTNcIjtcbnZhciBfMTEgPSBcInJlamVjdGVkX19fTkpFNFpcIjtcbnZhciBfMTIgPSBcInN1YnRpdGxlX19fUHREZTJcIjtcbnZhciBfMTMgPSBcInN1Y2Nlc3NNc2dfX19IdE1zZVwiO1xudmFyIF8xNCA9IFwic3VjY2Vzc01zZzJfX19RNnpuYVwiO1xudmFyIF8xNSA9IFwidGlja2V0TGlzdF9fX2VEUVIzXCI7XG52YXIgXzE2ID0gXCJ0aWNrZXROb19fX19FQUQ0XCI7XG5leHBvcnQgeyBfMSBhcyBcIkNUQUJ1dHRvbldyYXBwZXJcIiwgXzIgYXMgXCJhY3Rpb25CdXR0b25zXCIsIF8zIGFzIFwiYXBwcm92ZWRcIiwgXzQgYXMgXCJiYWRnZUZlYXR1cmVcIiwgXzUgYXMgXCJiYWRnZUZlYXR1cmVXcmFwcGVyXCIsIF82IGFzIFwiYnV0dG9uUGlsbFwiLCBfNyBhcyBcImNhbmNlbEJ1dHRvblwiLCBfOCBhcyBcImNvbnRpbnVlQnV0dG9uXCIsIF85IGFzIFwiZGVsZXRlSWNvblwiLCBfYSBhcyBcInBlbmRpbmdcIiwgX2IgYXMgXCJyZWZ1bmREZXRhaWxcIiwgX2MgYXMgXCJyZWZ1bmRFcnJvck1zZ1wiLCBfZCBhcyBcInJlZnVuZFN1Y2Nlc3NmdWxcIiwgX2UgYXMgXCJyZWZ1bmRUZXh0XCIsIF9mIGFzIFwicmVmdW5kVGlja2V0QXR0ZW5kZWVcIiwgXzEwIGFzIFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyXCIsIF8xMSBhcyBcInJlamVjdGVkXCIsIF8xMiBhcyBcInN1YnRpdGxlXCIsIF8xMyBhcyBcInN1Y2Nlc3NNc2dcIiwgXzE0IGFzIFwic3VjY2Vzc01zZzJcIiwgXzE1IGFzIFwidGlja2V0TGlzdFwiLCBfMTYgYXMgXCJ0aWNrZXROb1wiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjbG9zZUJ0bl9fX3lTUUNPXCI7XG52YXIgXzIgPSBcImhlYWRlcl9fX2ZCWEc5XCI7XG52YXIgXzMgPSBcInRpdGxlX19fdHlaZVFcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX1JPSkdzXCI7XG5leHBvcnQgeyBfMSBhcyBcImNsb3NlQnRuXCIsIF8yIGFzIFwiaGVhZGVyXCIsIF8zIGFzIFwidGl0bGVcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInN1bW1pdFRpdGxlRGF0ZV9fX1hucnBGXCI7XG52YXIgXzIgPSBcIndpZGdldEhlYWRlcl9fX2dnTHRNXCI7XG5leHBvcnQgeyBfMSBhcyBcInN1bW1pdFRpdGxlRGF0ZVwiLCBfMiBhcyBcIndpZGdldEhlYWRlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJoZWFkZXJOb3RlX19fQWU1RUFcIjtcbnZhciBfMiA9IFwib3JkZXJOb19fX1ZPUFJ3XCI7XG52YXIgXzMgPSBcInB1cmNoYXNlZEJ5X19fTU5pSFRcIjtcbnZhciBfNCA9IFwicHVyY2hhc2VkQnlXcmFwcGVyX19fRGg2SFVcIjtcbnZhciBfNSA9IFwid3JhcHBlcl9fX21WdWlaXCI7XG5leHBvcnQgeyBfMSBhcyBcImhlYWRlck5vdGVcIiwgXzIgYXMgXCJvcmRlck5vXCIsIF8zIGFzIFwicHVyY2hhc2VkQnlcIiwgXzQgYXMgXCJwdXJjaGFzZWRCeVdyYXBwZXJcIiwgXzUgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnbk9wdGlvbnNXcmFwcGVyX19fb2pGXzdcIjtcbnZhciBfMiA9IFwidGlja2V0UmVhc3NpZ25Db250YWluZXJfX19nT3RhSlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhc3NpZ25PcHRpb25zV3JhcHBlclwiLCBfMiBhcyBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIndyYXBwZXJfX19Fd09SelwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImluZm9Ob3RlX19faTFYWTlcIjtcbnZhciBfMiA9IFwid3JhcHBlcl9fX01BdU5TXCI7XG5leHBvcnQgeyBfMSBhcyBcImluZm9Ob3RlXCIsIF8yIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyX19fQXV2cm5cIjtcbnZhciBfMiA9IFwiYWRkaXRpb25hbERldGFpbHNfX19tUDFpSlwiO1xudmFyIF8zID0gXCJhdHRlbmRlZUNvbnRhaW5lcl9fX1EwVlV6XCI7XG52YXIgXzQgPSBcImF0dGVuZGVlSW5mb1RpdGxlX19fTG1ybTRcIjtcbnZhciBfNSA9IFwiY2xvc2VCdG5fX19XTkpsRVwiO1xudmFyIF82ID0gXCJjb3B5QnRuX19fX3V0QTZcIjtcbnZhciBfNyA9IFwiZGVsZWdhdGVkVG9fX19TR1ZRSVwiO1xudmFyIF84ID0gXCJkb3dubG9hZEJ0bl9fX3FqWWh6XCI7XG52YXIgXzkgPSBcImhlYWRlcl9fX0F1Z256XCI7XG52YXIgX2EgPSBcIm9yZGVyTnVtYmVyX19fTDVRNWFcIjtcbnZhciBfYiA9IFwicXJDb2RlX19fZndxWnFcIjtcbnZhciBfYyA9IFwicXJOb3RlX19fR2M3S25cIjtcbnZhciBfZCA9IFwic2VuZEJ0bl9fX2tvV00yXCI7XG52YXIgX2UgPSBcInNlbnRfX19rNldLeFwiO1xudmFyIF9mID0gXCJzdGF0dXNfX19rd0M4eVwiO1xudmFyIF8xMCA9IFwic3VidGl0bGVfX195X051T1wiO1xudmFyIF8xMSA9IFwidGlja2V0RGV0YWlsQ29udGFpbmVyX19fYjJUTFJcIjtcbnZhciBfMTIgPSBcInRpdGxlX19fd1F6VU5cIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lclwiLCBfMiBhcyBcImFkZGl0aW9uYWxEZXRhaWxzXCIsIF8zIGFzIFwiYXR0ZW5kZWVDb250YWluZXJcIiwgXzQgYXMgXCJhdHRlbmRlZUluZm9UaXRsZVwiLCBfNSBhcyBcImNsb3NlQnRuXCIsIF82IGFzIFwiY29weUJ0blwiLCBfNyBhcyBcImRlbGVnYXRlZFRvXCIsIF84IGFzIFwiZG93bmxvYWRCdG5cIiwgXzkgYXMgXCJoZWFkZXJcIiwgX2EgYXMgXCJvcmRlck51bWJlclwiLCBfYiBhcyBcInFyQ29kZVwiLCBfYyBhcyBcInFyTm90ZVwiLCBfZCBhcyBcInNlbmRCdG5cIiwgX2UgYXMgXCJzZW50XCIsIF9mIGFzIFwic3RhdHVzXCIsIF8xMCBhcyBcInN1YnRpdGxlXCIsIF8xMSBhcyBcInRpY2tldERldGFpbENvbnRhaW5lclwiLCBfMTIgYXMgXCJ0aXRsZVwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJidXR0b25DYW5jZWxsZWRfX19FcmxEWlwiO1xudmFyIF8yID0gXCJidXR0b25Db21wbGV0ZV9fX2xsV2taXCI7XG52YXIgXzMgPSBcImJ1dHRvbkluY29tcGxldGVfX19Ub2xIZ1wiO1xudmFyIF80ID0gXCJidXR0b25QaWxsX19fenEydGNcIjtcbnZhciBfNSA9IFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkX19fcFd0MzBcIjtcbnZhciBfNiA9IFwiYnV0dG9uVW5hc3NpZ25lZF9fX1lEZDhYXCI7XG52YXIgXzcgPSBcInRpY2tldFN0YXR1c0NvbnRhaW5lcl9fX3FqNmZiXCI7XG5leHBvcnQgeyBfMSBhcyBcImJ1dHRvbkNhbmNlbGxlZFwiLCBfMiBhcyBcImJ1dHRvbkNvbXBsZXRlXCIsIF8zIGFzIFwiYnV0dG9uSW5jb21wbGV0ZVwiLCBfNCBhcyBcImJ1dHRvblBpbGxcIiwgXzUgYXMgXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRcIiwgXzYgYXMgXCJidXR0b25VbmFzc2lnbmVkXCIsIF83IGFzIFwidGlja2V0U3RhdHVzQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGl2ZV9fX3RMeVdaXCI7XG52YXIgXzIgPSBcInRhYk9wdGlvbl9fX0g0SDF1XCI7XG52YXIgXzMgPSBcInRhYldyYXBwZXJfX191MjFzR1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3RpdmVcIiwgXzIgYXMgXCJ0YWJPcHRpb25cIiwgXzMgYXMgXCJ0YWJXcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInRpY2tldHNUaXRsZVRleHRfX19URFBtcFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ0aWNrZXRzVGl0bGVUZXh0XCIgfVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHJlZHV4anMvdG9vbGtpdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAc2VudHJ5L3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZvcm1pa1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImlkdG9rZW4tdmVyaWZpZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibW9tZW50LXRpbWV6b25lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInAtbGltaXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicHJvcC10eXBlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcXItY29kZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ5dXBcIik7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgUGVyc2lzdEdhdGUgfSBmcm9tIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlSW5pdFN0b3JlIH0gZnJvbSBcIi4vc3RvcmVcIjtcbmltcG9ydCB7IFJFU0VUX1NUQVRFLCBzZXRSZWR1Y2VyU3RhdGUgfSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5cbmltcG9ydCBXaWRnZXRXcmFwcGVyIGZyb20gXCIuL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlclwiO1xuXG5jb25zdCBNeU9yZGVyc015VGlja2V0c1dpZGdldCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICBhcGlCYXNlVXJsLFxuICAgIHVzZXIsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBzdG9yZSwgcGVyc2lzdG9yIH0gPSB1c2VJbml0U3RvcmUoe1xuICAgIGxvZ2luVXJsLFxuICAgIHN1cHBvcnRFbWFpbCxcbiAgICBzdW1taXQsXG4gICAgdXNlcixcbiAgICBhcGlCYXNlVXJsLFxuICAgIGNsaWVudElkLFxuICAgIHVwZGF0ZVByb2ZpbGVcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQmVmb3JlTGlmdCA9ICgpID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIGNvbnN0IGZsdXNoID0gcGFyYW1zLmhhcyhcImZsdXNoU3RhdGVcIik7XG4gICAgaWYgKGZsdXNoKSBzdG9yZS5kaXNwYXRjaCh7IHR5cGU6IFJFU0VUX1NUQVRFLCBwYXlsb2FkOiBudWxsIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc3RvcmUuZGlzcGF0Y2goc2V0UmVkdWNlclN0YXRlKHN1bW1pdCwgdXNlcikpO1xuICB9LCBbc3VtbWl0LCB1c2VyXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8UHJvdmlkZXIgc3RvcmU9e3N0b3JlfT5cbiAgICAgIDxQZXJzaXN0R2F0ZVxuICAgICAgICBvbkJlZm9yZUxpZnQ9e2hhbmRsZUJlZm9yZUxpZnR9XG4gICAgICAgIGxvYWRpbmc9e251bGx9XG4gICAgICAgIHBlcnNpc3Rvcj17cGVyc2lzdG9yfVxuICAgICAgPlxuICAgICAgICA8U3R5bGVkRW5naW5lUHJvdmlkZXIgaW5qZWN0Rmlyc3Q+XG4gICAgICAgICAgPFdpZGdldFdyYXBwZXIgLz5cbiAgICAgICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgICAgIDwvUGVyc2lzdEdhdGU+XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn07XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGllbnRJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXBkYXRlUHJvZmlsZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0O1xuIl0sIm5hbWVzIjpbImF1dGhFcnJvckhhbmRsZXIiLCJjcmVhdGVBY3Rpb24iLCJkZWxldGVSZXF1ZXN0IiwiZ2V0UmVxdWVzdCIsInB1dFJlcXVlc3QiLCJzdGFydExvYWRpbmciLCJzdG9wTG9hZGluZyIsInBMaW1pdCIsImdldElkVG9rZW4iLCJvYmplY3RUb1F1ZXJ5U3RyaW5nIiwiSWRUb2tlblZlcmlmaWVyIiwiaTE4biIsImdldEFjY2Vzc1Rva2VuU2FmZWx5IiwiREVGQVVMVF9JVEVNU19QRVJfUEFHRSIsIkVSUk9SX0NPREVTIiwiRklGVFlfUEVSX1BBR0UiLCJGSVJTVF9QQUdFIiwiUFJPTUlTRV9CQVRDSF9MSU1JVCIsIlRBQlMiLCJSRVNFVF9TVEFURSIsIlJFU0VUX0ZJTFRFUiIsIlJFU0VUX0FQSV9FUlJPUiIsIlNFVF9TVEFURSIsIlNFVF9BUElfRVJST1IiLCJDSEFOR0VfRklMVEVSIiwiQ0hBTkdFX1NPUlQiLCJHRVRfVVNFUl9PUkRFUlMiLCJSRUZVTkRfT1JERVIiLCJTRVRfQUNUSVZFX09SREVSX0lEIiwiRklMVEVSX1VTRVJfT1JERVJTIiwiR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMiLCJVUERBVEVfVElDS0VUIiwiUkVTRVRfVElDS0VUIiwiUkVDRUlWRV9USUNLRVQiLCJSRU1PVkVfVElDS0VUX0FUVEVOREVFIiwiQVNTSUdOX1RJQ0tFVCIsIkRFTEVHQVRFX1RJQ0tFVCIsIlJFRlVORF9USUNLRVQiLCJSRVNFTkRfTk9USUZJQ0FUSU9OIiwiR0VUX1RJQ0tFVFNfQllfT1JERVIiLCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiIsIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyIsIkdFVF9USUNLRVRfREVUQUlMUyIsIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TIiwiVElDS0VUX0FUVEVOREVFX0tFWVMiLCJlbWFpbCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueSIsImRpc2NsYWltZXJBY2NlcHRlZCIsImV4dHJhUXVlc3Rpb25zIiwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCIsIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUiLCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUiLCJVUERBVEVfSURQX1BST0ZJTEUiLCJTRVRfVVNFUiIsIlNFVF9TVU1NSVQiLCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMiLCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyIsIkNMRUFSX01BUktFVElOR19TRVRUSU5HUyIsInJlc2V0VGlja2V0IiwiZGlzcGF0Y2giLCJyZXNldFN0YXRlIiwicmVzZXRGaWx0ZXIiLCJyZXNldEVycm9yIiwic2V0UmVkdWNlclN0YXRlIiwic3VtbWl0IiwidXNlciIsIkZJTFRFUl9WQVJfREFURSIsIkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSIsIkZJTFRFUl9WQVJfVElDS0VUX1RZUEUiLCJGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCIsIkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTIiwiRklMVEVSX1ZBUl9QUk9NT0NPREUiLCJGSUxURVJfVkFSX0ZSRUVfUEFJRCIsIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIiwiY2hhbmdlRmlsdGVyIiwiZmlsdGVyIiwiY2hhbmdlU29ydCIsInNvcnQiLCJwYXJzZUZpbHRlciIsImZpbHRlck9iaiIsImN1cnJlbnRUYWIiLCJwdXNoIiwiY29uY2F0IiwibG93ZXIiLCJ1cHBlciIsImxlbmd0aCIsImZpbHRlck5hbWUiLCJPUkRFUlMiLCJqb2luIiwiZ2V0U29ydERpcmVjdGlvbiIsImRpcmVjdGlvbiIsImVycm9ySGFuZGxlck5vdGlmeSIsInBheWxvYWQiLCJjYWxsYmFjayIsImN1c3RvbUF1dGhFcnJvckhhbmRsZXIiLCJlcnIiLCJyZXMiLCJjdXN0b21GZXRjaEVycm9ySGFuZGxlciIsInJlc3BvbnNlIiwiY29kZSIsInN0YXR1cyIsIm1zZyIsInQiLCJPYmplY3QiLCJlbnRyaWVzIiwiZXJyb3JzIiwiZm9yRWFjaCIsIl9yZWYiLCJrZXkiLCJ2YWx1ZSIsIk51bWJlciIsImlzTmFOIiwic3RhdHVzVGV4dCIsInRpdGxlIiwiaHRtbCIsImdldFVzZXJPcmRlcnMiLCJfcmVmMiIsInBhZ2UiLCJwZXJQYWdlIiwiZ2V0U3RhdGUiLCJfcmVmMyIsImFwaUJhc2VVcmwiLCJ3aWRnZXRTdGF0ZSIsImFjY2Vzc1Rva2VuIiwiY2F0Y2giLCJQcm9taXNlIiwicmVqZWN0IiwicGFyYW1zIiwiYWNjZXNzX3Rva2VuIiwib3JkZXIiLCJyZWxhdGlvbnMiLCJwZXJfcGFnZSIsImtleXMiLCJmaWx0ZXJzIiwibmFtZSIsImlkIiwidGhlbiIsImUiLCJzZXRBY3RpdmVPcmRlcklkIiwib3JkZXJJZCIsInNldFVzZXIiLCJnZXRVc2VyVGlja2V0cyIsIl9yZWY0IiwiX3JlZjUiLCJ1c2VyUHJvZmlsZSIsImZpZWxkcyIsImV4cGFuZCIsIlRJQ0tFVFMiLCJnZXRUaWNrZXRzQnlPcmRlciIsIl9yZWY2IiwiX3JlZjciLCJyZXNlbmROb3RpZmljYXRpb24iLCJ0aWNrZXQiLCJfcmVmOCIsIm1lc3NhZ2UiLCJvcmRlcl9pZCIsInJlZnVuZFRpY2tldCIsIl9yZWY5IiwiX3JlZjEwIiwicmVmdW5kQnVsa1RpY2tldHMiLCJfcmVmMTEiLCJ0aWNrZXRzIiwibGltaXQiLCJhbGxSZWZ1bmRUaWNrZXRDYWxscyIsIm1hcCIsImFsbCIsInN1Y2Nlc3NmdWxseVJlcXVlc3RlZCIsInIiLCJfciRyZXNwb25zZSIsInJlZnVuZF9yZXF1ZXN0cyIsInVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJ0aWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwiZ2V0RXh0cmFRdWVzdGlvbnMiLCJhdHRlbmRlZUlkIiwiX3JlZjEyIiwiZW5kcG9pbnQiLCJnZXRUaWNrZXQiLCJ0aWNrZXRJZCIsIl9yZWYxMyIsImZpbmFsbHkiLCJub3JtYWxpemVUaWNrZXQiLCJlbnRpdHkiLCJub3JtYWxpemVkRW50aXR5IiwiX29iamVjdFNwcmVhZCIsImF0dGVuZGVlX2NvbXBhbnkiLCJhdHRlbmRlZV9jb21wYW55X2lkIiwicmVmcmVzaFByb2ZpbGUiLCJkYXRhIiwidGlja2V0T3duZXIiLCJfcmVmMTQiLCJfdGlja2V0T3duZXIkbWFuYWdlciIsInVwZGF0ZVByb2ZpbGUiLCJhdHRlbmRlZV9lbWFpbCIsImF0dGVuZGVlX2ZpcnN0X25hbWUiLCJhdHRlbmRlZV9sYXN0X25hbWUiLCJoYXNNYW5hZ2VyIiwibWFuYWdlciIsIm1hbmFnZXJfaWQiLCJpdHNNZSIsInByb2ZpbGVDaGFuZ2VkIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsIm5ld1Byb2ZpbGUiLCJzYXZlVGlja2V0RGV0YWlscyIsImFuc3dlcnMiLCJfcmVmMTUiLCJpZFRva2VuIiwidmVyaWZpZXIiLCJqd3QiLCJkZWNvZGUiLCJjb25zb2xlIiwibG9nIiwib3duZXIiLCJhc3NpZ25BdHRlbmRlZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9yZWYxNiIsInJlYXNzaWduVGlja2V0IiwiX3JlZjE3IiwiZGVsZWdhdGVUaWNrZXQiLCJfcmVmMTgiLCJzYXZlRXh0cmFRdWVzdGlvbnMiLCJfcmVmMTkiLCJnZXRUaWNrZXRQREYiLCJfcmVmMjAiLCJxdWVyeVN0cmluZyIsImFwaVVybCIsImZldGNoIiwicmVzcG9uc2VUeXBlIiwiaGVhZGVycyIsIm9rIiwiYmxvYiIsInBkZiIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ1cmwiLCJ3aW5kb3ciLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJocmVmIiwiZG93bmxvYWQiLCJkaXNwYXRjaEV2ZW50IiwiTW91c2VFdmVudCIsIlJlYWN0IiwiUHJvcFR5cGVzIiwidXNlVHJhbnNsYXRpb24iLCJCb3giLCJ1c2VGb3JtaWsiLCJFeHRyYVF1ZXN0aW9uc0ZpZWxkcyIsIkZvcm1Gb290ZXIiLCJ1c2VTY3JvbGxUb0Vycm9yIiwiUmVnaXN0cmF0aW9uRGlzY2xhaW1lciIsImJ1aWxkVmFsaWRhdGlvblNjaGVtYSIsInBhcnNlQW5zd2VycyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJBc3NpZ25FUUZvcm0iLCJvblN1Ym1pdCIsIm9uQ2xvc2UiLCJmb3JtaWsiLCJpbml0aWFsVmFsdWVzIiwidmFsaWRhdGlvblNjaGVtYSIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeSIsInZhbHVlcyIsInJlbGV2YW50QW5zd2VycyIsImVuYWJsZVJlaW5pdGlhbGl6ZSIsImhhbmRsZVN1Ym1pdCIsIm5vVmFsaWRhdGUiLCJjaGlsZHJlbiIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQiLCJkaXNjbGFpbWVyIiwiaXNSZXF1aXJlZCIsInNhdmVMYWJlbCIsImNhbmNlbExhYmVsIiwiZGlzYWJsZWQiLCJpc1N1Ym1pdHRpbmciLCJwcm9wVHlwZXMiLCJvYmplY3QiLCJhcnJheSIsImZ1bmMiLCJDb250ZW50Q29weUljb24iLCJUb29sdGlwIiwiTUlMTElTRUNfVE9fU0VDIiwic3R5bGVzIiwiZGVmYXVsdFdpZHRoIiwiQ29weVRleHQiLCJ0ZXh0IiwidG9vbHRpcFRleHQiLCJoaWRlQ29weSIsInRydW5jYXRlZCIsInJldmVyc2VkIiwid2lkdGgiLCJ0b29sdGlwVGV4dFRvVXNlIiwidG9vbHRpcCIsInNldFRvb2x0aXAiLCJ1c2VTdGF0ZSIsImNsYXNzTmFtZXMiLCJoYW5kbGVDb3B5IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0Iiwic2V0VGltZW91dCIsImNsYXNzTmFtZSIsIndyYXBwZXIiLCJzdHlsZSIsImNvcHlJY29uIiwib25DbGljayIsInN0cmluZyIsImJvb2wiLCJudW1iZXIiLCJjcmVhdGVDb250ZXh0IiwiZGVmYXVsdENvbnRleHRWYWx1ZSIsInNldE1lc3NhZ2UiLCJzZXRNZXNzYWdlQ2FsbGJhY2siLCJDdXN0b21EaWFsb2dDb250ZXh0IiwiRGlhbG9nIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0NvbnRlbnRUZXh0IiwiRGlhbG9nVGl0bGUiLCJDdXN0b21EaWFsb2ciLCJvcGVuIiwiYm9keSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwiVGhlbWVQcm92aWRlciIsImNyZWF0ZVRoZW1lIiwiZGFya0NvbG9yIiwicm9vdCIsImRvY3VtZW50RWxlbWVudCIsImdldENvbXB1dGVkU3R5bGUiLCJnZXRQcm9wZXJ0eVZhbHVlIiwidGhlbWUiLCJwYWxldHRlIiwicHJpbWFyeSIsIm1haW4iLCJzZWNvbmRhcnkiLCJ0eXBvZ3JhcGh5IiwiYm9keTEiLCJmb250U2l6ZSIsImg1IiwiZm9udFdlaWdodCIsIm1hcmdpbkJvdHRvbSIsImg2IiwiY29tcG9uZW50cyIsIk11aUJ1dHRvbiIsInN0eWxlT3ZlcnJpZGVzIiwibGluZUhlaWdodCIsIk11aVRhYiIsImNvbG9yIiwiTXVpVGFicyIsImluZGljYXRvciIsImJhY2tncm91bmRDb2xvciIsIkN1c3RvbVRoZW1lIiwibm9kZSIsIkNoZWNrYm94IiwiRm9ybUNvbnRyb2wiLCJGb3JtQ29udHJvbExhYmVsIiwiRm9ybUdyb3VwIiwiRm9ybUhlbHBlclRleHQiLCJGb3JtTGFiZWwiLCJnZXRMYWJlbCIsInRvU2x1ZyIsIkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQiLCJfcXVlc3Rpb24kdmFsdWVzIiwicXVlc3Rpb24iLCJxdWVzdGlvbkNsYXNzTmFtZSIsImlzRGlzYWJsZWQiLCJvbkNoYW5nZSIsInNldEZpZWxkVmFsdWUiLCJlcnJvciIsImhlbHBlclRleHQiLCJyZXN0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwicXVlc3Rpb25TbHVnIiwicXVlc3Rpb25MYWJlbCIsIm1hbmRhdG9yeSIsInF1ZXN0aW9uTWF4VmFsdWVzIiwibWF4X3NlbGVjdGVkX3ZhbHVlcyIsInF1ZXN0aW9uT3B0aW9ucyIsInZhbCIsImxhYmVsIiwidG9TdHJpbmciLCJoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UiLCJjaGVja2VkIiwiY3VycmVudEFucyIsIm1heFNlbGVjdGlvblJlYWNoZWQiLCJuZXdWYWx1ZSIsInYiLCJyZXF1aXJlZCIsImZ1bGxXaWR0aCIsIm1hcmdpbiIsIm9wIiwiY29udHJvbCIsImluY2x1ZGVzIiwiZXYiLCJ0YXJnZXQiLCJSYXdIVE1MIiwiQ2hlY2tib3hRdWVzdGlvbkZpZWxkIiwiSW5wdXRMYWJlbCIsIk1lbnVJdGVtIiwiU2VsZWN0IiwiRHJvcGRvd25RdWVzdGlvbkZpZWxkIiwibGFiZWxJZCIsIlJhZGlvIiwiUmFkaW9Hcm91cCIsIlJhZGlvTGlzdFF1ZXN0aW9uRmllbGQiLCJUZXh0RmllbGQiLCJUZXh0UXVlc3Rpb25GaWVsZCIsIlF1ZXN0aW9uVHlwZV9DaGVja2JveCIsIlF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QiLCJRdWVzdGlvblR5cGVfQ29tYm9Cb3giLCJRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94IiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCIsImNoZWNrUnVsZSIsInJ1bGUiLCJhbnN3ZXJfdmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwiYW5zd2VyX3ZhbHVlc19vcGVyYXRvciIsImNoZWNrVmlzaWJpbGl0eSIsInJ1bGVSZXN1bHQiLCJ2aXNpYmlsaXR5IiwidmlzaWJpbGl0eV9jb25kaXRpb24iLCJxdWVzdGlvbklkIiwidGV4dExDIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwicSIsIl9xJGxhYmVsIiwiaXNBbnN3ZXJlZCIsImFuc3dlciIsImNoZWNrSWZWYWx1ZU1hdGNoIiwiY29tcGFyZVZhbCIsImFuc3dlckFycmF5Iiwic29tZSIsImdldFR5cGVJbml0aWFsVmFsdWUiLCJ0eXBlIiwiZ2V0VHlwZVZhbHVlIiwiYW5zIiwic3BsaXQiLCJ0cmFuc2Zvcm1BbndlcnNGb3JtYXQiLCJkaXNjbGFpbWVyX2FjY2VwdGVkIiwiZXh0cmFfcXVlc3Rpb25zIiwiZm9ybWF0dGVkRVEiLCJxdWVzdGlvbl9pZCIsInBhcnNlSW50IiwicG9wIiwiUXVlc3Rpb25UeXBlX1RleHQiLCJRdWVzdGlvblR5cGVfVGV4dEFyZWEiLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24iLCJnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwicXVlc3Rpb25UeXBlIiwiRnJhZ21lbnQiLCJyZWFkT25seSIsImFsbG93RWRpdCIsInJlbmRlclJ1bGUiLCJpc1Zpc2libGUiLCJyZW5kZXJRdWVzdGlvbiIsInN1Yl9xdWVzdGlvbiIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlcyIsIlF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJmb3JtaWtQcm9wcyIsImhhbmRsZUNoYW5nZSIsIm9uQmx1ciIsImhhbmRsZUJsdXIiLCJ0b3VjaGVkIiwiQm9vbGVhbiIsInN1Yl9xdWVzdGlvbl9ydWxlcyIsInVzZVNlbGVjdG9yIiwic2hhbGxvd0VxdWFsIiwiQ2FyZEhlYWRlciIsIkljb25CdXR0b24iLCJDb2xsYXBzZSIsIkNhcmRDb250ZW50IiwiRXhwYW5kTW9yZUljb24iLCJBc3NpZ25lZEZpbHRlciIsIm9uRmlsdGVyIiwiZmlsdGVyVmFsdWVzIiwic3RhdGUiLCJpc0V4cGFuZGVkIiwic2V0SXNFeHBhbmRlZCIsImFzc2lnbmVkVmFsdWVzIiwiaGFuZGxlRmlsdGVyQ2hhbmdlIiwibmV3RmlsdGVyIiwidGl0bGVXcmFwcGVyIiwiYWN0aW9uIiwiZGlzYWJsZVJpcHBsZSIsInRyYW5zZm9ybSIsInRyYW5zaXRpb24iLCJpbiIsInRpbWVvdXQiLCJ1bm1vdW50T25FeGl0Iiwic3giLCJweSIsInBiIiwiYXNzaWduZWQiLCJ1c2VFZmZlY3QiLCJCYWRnZUZlYXR1cmVGaWx0ZXIiLCJiYWRnZV9mZWF0dXJlc190eXBlcyIsIm5ld0ZpbHRlcnMiLCJmIiwiYmYiLCJ1c2VSZWYiLCJTdGFjayIsIkZpbHRlckxpc3RJY29uIiwiQmFkZ2UiLCJCdXR0b24iLCJDYXJkIiwiRGl2aWRlciIsIlBhcGVyIiwiY29ubmVjdCIsIlRpY2tldFR5cGVGaWx0ZXIiLCJTdGF0dXNGaWx0ZXIiLCJGcmVlUGFpZEZpbHRlciIsIlByb21vQ29kZUZpbHRlciIsIkZpbHRlciIsIm9uUmVzZXQiLCJzaG93RmlsdGVyTGlzdCIsInNldFNob3dGaWx0ZXJMaXN0Iiwic2hvd0RhdGVwaWNrZXIiLCJzZXRTaG93RGF0ZXBpY2tlciIsImZpbHRlck51bUFjdGl2ZSIsInNldEZpbHRlck51bUFjdGl2ZSIsImZpbHRlclJlZiIsImhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJNQVJHSU5fUklHSFRfV0lUSF9CQURHRSIsIkFERF9GSUxURVJfTlVNQkVSIiwiY2FsY3VsYXRlQWN0aXZlRmlsdGVycyIsImNvdW50IiwidHJpbSIsInRvZ2dsZSIsImhhbmRsZUZpbHRlclJlc2V0IiwiZmlsdGVyQ29udGFpbmVyIiwicmVmIiwiYWxpZ25JdGVtcyIsInB0IiwiYmFkZ2VDb250ZW50IiwibXIiLCJmaWx0ZXJJY29uIiwiZmlsdGVyTGFiZWwiLCJmaWx0ZXJMaXN0Q29udGFpbmVyIiwiY29udGFpbmVyIiwiZWxldmF0aW9uIiwiZmlsdGVyQ2hlY2tib3hDb250YWluZXIiLCJ2YXJpYW50IiwiY2xlYW5CdXR0b24iLCJtYXBTdGF0ZVRvUHJvcHMiLCJwcm9tb0NvZGUiLCJzZXRQcm9tb0NvZGUiLCJkZWJvdW5jZVRpbWVyIiwiREVCT1VOQ0VfVkFMVUUiLCJuZXdQcm9tb0NvZGUiLCJjbGVhclRpbWVvdXQiLCJwbGFjZWhvbGRlciIsInN0eWxlZCIsIlNlYXJjaEljb24iLCJDbG9zZUljb24iLCJJbnB1dEJhc2UiLCJTZWFyY2hDb250YWluZXIiLCJwb3NpdGlvbiIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsImRpc3BsYXkiLCJTZWFyY2hJY29uV3JhcHBlciIsImhlaWdodCIsImp1c3RpZnlDb250ZW50IiwiU3R5bGVkSW5wdXRCYXNlIiwiYm9yZGVyQm90dG9tIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJDbG9zZUljb25XcmFwcGVyIiwicGFkZGluZyIsInRvcCIsInJpZ2h0IiwiY3Vyc29yIiwiekluZGV4IiwiU2VhcmNoIiwib25TZWFyY2giLCJzaG93Q2xvc2UiLCJzZXRTaG93Q2xvc2UiLCJzZWFyY2hWYWx1ZSIsInNldFNlYXJjaFZhbHVlIiwib25LZXlEb3duIiwibmF0aXZlRXZlbnQiLCJyZXNldFNlYXJjaCIsImlucHV0UHJvcHMiLCJJbXBvcnRFeHBvcnRJY29uIiwiU29ydCIsIm9uU29ydCIsInNob3dTb3J0Iiwic2V0U2hvd1NvcnQiLCJzb3J0UmVmIiwiaGFuZGxlU29ydENsaWNrT3V0c2lkZSIsInNvcnRDb250YWluZXIiLCJzb3J0SWNvbiIsInNvcnRMYWJlbCIsInNvcnRMaXN0Q29udGFpbmVyIiwidGlja2V0X3R5cGVzIiwiR3JpZCIsIkZpbHRlcnMiLCJqdXN0aWZ5IiwiaXRlbSIsInhzIiwiZ2FwIiwiZmlsdGVyU29ydENvbnRhaW5lciIsImZvb3RlciIsImNhbmNlbEJ0biIsInNpemUiLCJzYXZlQnRuIiwiRXJyb3JJY29uIiwiRXJyb3JMYWJlbCIsImRhdGFUZXN0SWQiLCJlcnJvckxhYmVsIiwiQmFja2Ryb3AiLCJDaXJjdWxhclByb2dyZXNzIiwiTG9hZGVyIiwiZHJhd2VyIiwiSW5maW5pdGVTY3JvbGwiLCJPcmRlcnNMaXN0IiwiT05FX1BBR0VfTkVYVCIsIk15T3JkZXJzVGlja2V0cyIsImZldGNoRGF0YSIsIm1lbWJlck9yZGVycyIsIm9yZGVyc19jdXJyZW50X3BhZ2UiLCJvcmRlcnNfbGFzdF9wYWdlIiwibXlPcmRlcnNXcmFwcGVyIiwiZGF0YUxlbmd0aCIsIm5leHQiLCJoYXNNb3JlIiwic2Nyb2xsVGhyZXNob2xkIiwibm9PcmRlcnNGb3VuZCIsIm5vT3JkZXJzSWNvbldyYXBwZXIiLCJjYWxjdWxhdGVPcmRlclRvdGFscyIsImZvcm1hdEN1cnJlbmN5IiwiX0ZyYWdtZW50IiwiT3JkZXJTdW1tYXJ5VGFibGUiLCJkaXNjb3VudFRvdGFsIiwicmVmdW5kVG90YWwiLCJ0YXhlc1RvdGFsIiwiYW1vdW50VG90YWwiLCJ0aWNrZXRTdW1tYXJ5IiwiaHVuZHJlZCIsIm9yZGVyU3VtbWFyeVRhYmxlIiwidGlja2V0VG90YWwiLCJxdHkiLCJ0aWNrZXRfdHlwZSIsImNvc3QiLCJhbGlnbiIsImN1cnJlbmN5IiwiY3JlYXRlZCIsImRpc2NvdW50X2Ftb3VudCIsInRheGVzX2Ftb3VudCIsInNoYXBlIiwidXNlTm93IiwidGlja2V0c1JlZnVuZGFibGUiLCJSZWZ1bmRFbWFpbFN1cHBvcnQiLCJzdWJtaXRSZXF1ZXN0Iiwib25SZWZ1bmRDbGljayIsIm9uUmVmdW5kRGV0YWlsQ2xpY2siLCJvbkVtYWlsU3VwcG9ydENsaWNrIiwibm93IiwiaXNJblJlZnVuZGFibGVQZXJpb2QiLCJyZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUiLCJhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCIsImlzUmVmdW5kYWJsZSIsImhhc1JlZnVuZFJlcXVlc3RzIiwicm9sZSIsIm9yZGVyU3VtbWFyeUJ1dHRvbiIsInJlZnVuZERpc2FibGVkIiwiYXJyYXlPZiIsIk9yZGVyU3VtbWFyeSIsIm9yZGVyU3VtbWFyeVdyYXBwZXIiLCJweCIsIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm8iLCJtZW1iZXJUaWNrZXRzIiwiT3JkZXJMaXN0VGlja2V0cyIsIkFzc2lnblRvTWUiLCJ1c2VyVGlja2V0cyIsInVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UiLCJ1c2VyX3RpY2tldHNfbGFzdF9wYWdlIiwib3JkZXJUaWNrZXRDb250YWluZXIiLCJhc3NpZ25lZFRvTWVXcmFwcGVyIiwidGlja2V0TGlzdENvbnRhaW5lciIsImlzUmVmdW5kTW9kYWwiLCJpc1NlbGVjdGVkVG9SZWZ1bmQiLCJzZWxlY3RUb1JlZnVuZCIsImlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCIsIm5vVGlja2V0c0ZvdW5kIiwiVHlwb2dyYXBoeSIsIkFzc2lnbmVkVG8iLCJFeHRlcm5hbEFzc2lnbmVkVG8iLCJNYW5hZ2VGb3IiLCJBdHRlbmRlZVN0YXR1cyIsIl90aWNrZXQkb3duZXIiLCJfdGlja2V0JG93bmVyMiIsIl90aWNrZXQkb3duZXIzIiwiaXNVbmFzc2lnbmVkIiwiaXNfYWN0aXZlIiwiaXNEZWxlZ2F0ZWQiLCJ0aWNrZXRPd25lckVtYWlsIiwiX3RpY2tldCRvcmRlciIsIl90aWNrZXQkb3JkZXIyIiwiX3RpY2tldCRvd25lcjQiLCJfdGlja2V0JG93bmVyNSIsImFzc2lnbmVkQnlUZXh0Iiwib3duZXJfZmlyc3RfbmFtZSIsIm93bmVyX2xhc3RfbmFtZSIsIlBBR0lOQVRJT05fRElTUExBWV9DT1VOVCIsIk9yZGVyTGlzdEl0ZW0iLCJfb3JkZXIkbWVtYmVyVGlja2V0cyIsIl9vcmRlciRtZW1iZXJUaWNrZXRzMiIsIm9uUGFnaW5hdGVDbGljayIsInRpY2tldHNUb1JlZnVuZCIsIml0ZW1zVG9EaXNwbGF5Iiwic2V0SXRlbXNUb0Rpc3BsYXkiLCJzbGljZWRUaWNrZXRzIiwic2xpY2UiLCJvblZpZXdNb3JlIiwidGlja2V0c190b3RhbCIsIm9uVmlld0xlc3MiLCJmaW5kIiwidmlld01vcmVCdXR0b24iLCJ1c2VEaXNwYXRjaCIsIlRpY2tldFN0YXR1cyIsImdldFN1bW1pdFJlYXNzaWduRGF0ZSIsIlRpY2tldERldGFpbCIsInVzZVRpY2tldERldGFpbHMiLCJUaWNrZXRBc3NpZ24iLCJtb2RhbFZpZXdzIiwiZGV0YWlsIiwicmVhc3NpZ24iLCJhc3NpZ24iLCJUaWNrZXRDVEFzIiwiaXNJbmNvbXBsZXRlIiwiaXNSZWFzc2lnbmFibGUiLCJvbk9wZW5DbGljayIsImFzc2lnblRpY2tldEJ1dHRvbiIsInZpZXdGaW5pc2hUaWNrZXRCdXR0b24iLCJyZWFzc2lnbkJ1dHRvbiIsIl90aWNrZXQkdGlja2V0X3R5cGUiLCJfdGlja2V0JGJhZGdlIiwiY2FuUmVhc3NpZ24iLCJtb2RhbE9wZW4iLCJzZXRNb2RhbE9wZW4iLCJyZWFzc2lnbkRhdGUiLCJvblJlYXNzaWduYWJsZVBlcmlvZCIsImhhbmRsZUNsb3NlTW9kYWwiLCJoYW5kbGVPcGVuTW9kYWwiLCJ2aWV3Iiwib3JkZXJXcmFwcGVyIiwicmVmdW5kTW9kYWwiLCJkaXNhYmxlZFJlZnVuZCIsInNlbGVjdGVkIiwiY2hlY2tib3giLCJwbCIsInRpY2tldFRpY2tldFR5cGUiLCJiYWRnZUZlYXR1cmVXcmFwcGVyIiwicHIiLCJiYWRnZSIsImZlYXR1cmVzIiwiYmFkZ2VGZWF0dXJlIiwic3JjIiwiaW1hZ2UiLCJhbHQiLCJ0aWNrZXRObyIsImZsZXhXcmFwIiwibWluV2lkdGgiLCJ0aWNrZXRBY3Rpb25CdXR0b25zIiwib3duZXJJZCIsInRvdGFsX3JlZnVuZGVkX2Ftb3VudCIsIlRhYnMiLCJUYWIiLCJSZWZ1bmRSZXF1ZXN0c01vZGFsIiwiUmVmdW5kRGV0YWlscyIsIlRhYlBhbmVsIiwicHJvcHMiLCJpbmRleCIsImhpZGRlbiIsIk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIiwiaXNNb2JpbGUiLCJkZXRhaWxzUmVxdWlyZWQiLCJzZXRWYWx1ZSIsIl8iLCJzZXRUaWNrZXRzVG9SZWZ1bmQiLCJzZXRTdWJtaXRSZXF1ZXN0IiwicmVmdW5kRGV0YWlsc09wZW4iLCJzZXRSZWZ1bmREZXRhaWxzT3BlbiIsInVuc2VsZWN0UmVmdW5kVGlja2V0cyIsImZpbHRlclNlbGVjdGVkIiwic2VsZWN0ZWRUaWNrZXQiLCJjbG9zZVN1Ym1pdFJlcXVlc3QiLCJyZXNldEFsbFJlZnVuZFN0YXR1c2VzIiwibW9yZURldGFpbHMiLCJib3JkZXJDb2xvciIsInRhYkJ1dHRvbnMiLCJtZCIsIm9uUmVmdW5kU3VjY2Vzc0Nsb3NlIiwib25DbG9zZVNsaWRlciIsInVzZVRoZW1lIiwidXNlTWVkaWFRdWVyeSIsImdldEZvcm1hdHRlZERhdGUiLCJ0aWNrZXRfcGVyX3BhZ2UiLCJicmVha3BvaW50cyIsImRvd24iLCJpc01vYmlsZVZpZXdhYmxlIiwic2V0TW9iaWxlVmlld2FibGUiLCJ0aWNrZXRzX3BhZ2VfY3VycmVudCIsImxnIiwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyIiwib3JkZXJUaWNrZXRJbmZvIiwicm93U3BhY2luZyIsImNvbHVtblNwYWNpbmciLCJzbSIsImRpc3BsYXlfbm9uZSIsImZsZXhEaXJlY3Rpb24iLCJ1c2VNZW1vIiwiUmlnaHREcmF3ZXIiLCJSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQiLCJnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzIiwicmVxdWVzdGVkVGlja2V0cyIsImNsb3NlU2xpZGVyIiwicmVmdW5kRGV0YWlscyIsInRvb2x0aXBDbGFzc2VzIiwiSW5mb0ljb24iLCJtb21lbnQiLCJSZWZ1bmRTdGF0dXMiLCJHUklEXzgiLCJHUklEXzEyIiwiUEFERElOR18yIiwiYXBwcm92ZWRSZWZ1bmRzIiwicmVmdW5kIiwicmVmdW5kZWRUYXhlc1N1bW1hdG9yeSIsInJlZnVuZGVkX3RheGVzIiwicnQiLCJ0YXhJZCIsInRheCIsInRvdGFsUmVmdW5kZWRUYXhBbW91bnQiLCJyZWZ1bmRlZF9hbW91bnQiLCJIdG1sVG9vbHRpcCIsImNsYXNzZXMiLCJwb3BwZXIiLCJtYXhXaWR0aCIsImJvcmRlciIsInJlZnVuZFRpY2tldEJveENvbnRhaW5lciIsInJlZnVuZERldGFpbCIsInJlZnVuZFRpY2tldEF0dGVuZGVlIiwiYWN0aW9uX2RhdGUiLCJmb3JtYXQiLCJDaGlwIiwiZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IiLCJzdGF0dXNDb2xvciIsImJ1dHRvblBpbGwiLCJTdHlsZWRFbmdpbmVQcm92aWRlciIsIkNoZWNrQ2lyY2xlSWNvbiIsIlNURVBfT05FIiwiU1RFUF9USFJFRSIsIlNURVBfVFdPIiwic3RlcCIsInNldFN0ZXAiLCJlcnJvck1zZyIsInNldEVycm9yTXNnIiwicmVmdW5kU3VjY2VzcyIsInNldFJlZnVuZFN1Y2Nlc3MiLCJjb25maXJtUmVmdW5kIiwiZ29CYWNrVG9SZWZ1bmQiLCJyZWZ1bmRUaWNrZXRzIiwicmVmdW5kU3RlcE9uZSIsInN1YnRpdGxlIiwidGlja2V0TGlzdCIsImFjdGlvbkJ1dHRvbnMiLCJjYW5jZWxCdXR0b24iLCJjb250aW51ZUJ1dHRvbiIsInJlZnVuZFN0ZXBUd28iLCJyZWZ1bmRFcnJvck1zZyIsIkNUQUJ1dHRvbldyYXBwZXIiLCJyZWZ1bmRTdGVwVGhyZWUiLCJyZWZ1bmRTdWNjZXNzZnVsIiwic3VjY2Vzc01zZyIsInN1Y2Nlc3NNc2cyIiwicmVuZGVyU3RlcHMiLCJpbmplY3RGaXJzdCIsIkRyYXdlciIsIkNsb3NlIiwiYW5jaG9yIiwiTW9kYWxQcm9wcyIsImtlZXBNb3VudGVkIiwiaGVhZGVyIiwiY2xvc2VCdG4iLCJmbG9hdCIsImd1dHRlckJvdHRvbSIsIm9uZU9mVHlwZSIsImdldFN1bW1pdEZvcm1hdHRlZERhdGUiLCJTdW1taXRIZWFkZXIiLCJ3aWRnZXRIZWFkZXIiLCJzdW1taXRUaXRsZURhdGUiLCJ5dXAiLCJEZWxlZ2F0ZUZvcm0iLCJkZWxlZ2F0ZV9maXJzdF9uYW1lIiwiZGVsZWdhdGVfbGFzdF9uYW1lIiwiZGVsZWdhdGVfZW1haWwiLCJyZXNldEZvcm0iLCJoYW5kbGVDYW5jZWwiLCJMaW5rIiwiQXNzaWduSGVhZGVyIiwiaW5Qcm9ncmVzcyIsInVzZXJFbWFpbCIsImFzc2lnbmVkVG9Zb3UiLCJnZXRTZWNvbmRhcnlUaXRsZSIsImdldEhlYWRlck5vdGUiLCJ0cmFuc0tleSIsImNvbXBvbmVudCIsInB1cmNoYXNlZEJ5V3JhcHBlciIsInB1cmNoYXNlZEJ5Iiwib3duZXJfZW1haWwiLCJvcmRlck5vIiwiaGVhZGVyTm90ZSIsIlJlYXNzaWduSGVhZGVyIiwiYWxsb3dzRGVsZWdhdGUiLCJSZWFzc2lnbkZvcm0iLCJuZXdfYXR0ZW5kZWVfZW1haWwiLCJwZXJzb25hbF9tZXNzYWdlIiwibXVsdGlsaW5lIiwibWluUm93cyIsInVzZUdldFRpY2tldCIsInNhdmVNZXNzYWdlIiwic2V0U2F2ZU1lc3NhZ2UiLCJhc3NpZ25PcHRpb24iLCJzZXRBc3NpZ25PcHRpb24iLCJhc3NpZ25hdGlvbkluUHJvZ3Jlc3MiLCJzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MiLCJpc0Fzc2lnbmVkVG9NZSIsIm9uQXNzaWduIiwib25EZWxlZ2F0ZSIsIm9uQ2xvc2VFUUZvcm0iLCJvbkNsb3NlU2F2ZU1lc3NhZ2UiLCJvblNhdmVFUSIsImRlc2NyaXB0aW9uIiwicmVzb2x2ZSIsIkhlYWRlciIsInRpY2tldFJlYXNzaWduQ29udGFpbmVyIiwiYXNzaWduT3B0aW9uc1dyYXBwZXIiLCJteSIsIkF1dG9jb21wbGV0ZSIsInF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIiwiQ29tcGFueUZpZWxkIiwic3VtbWl0SWQiLCJpbnB1dFZhbHVlIiwic2V0SW5wdXRWYWx1ZSIsIm9wdGlvbnMiLCJzZXRPcHRpb25zIiwic2V0RmllbGRUb3VjaGVkIiwicmVzdWx0cyIsIm5ld09wdGlvbnMiLCJhdXRvQ29tcGxldGUiLCJmcmVlU29sbyIsImluY2x1ZGVJbnB1dEluTGlzdCIsImZpbHRlclNlbGVjdGVkT3B0aW9ucyIsImdldE9wdGlvbkxhYmVsIiwib3B0aW9uIiwidG1wVmFsdWUiLCJvbklucHV0Q2hhbmdlIiwibmV3SW5wdXRWYWx1ZSIsImZpbHRlck9wdGlvbnMiLCJmaWx0ZXJlZCIsImlzRXhpc3RpbmciLCJyZW5kZXJJbnB1dCIsInJlbmRlck9wdGlvbiIsIm9wdGlvblByb3BzIiwiVGlja2V0T3duZXJGaWVsZHMiLCJUaWNrZXRGb3JtIiwiY2FuRWRpdCIsInJlZHVjZSIsImFkZGl0aW9uYWxEZXRhaWxzIiwiaW5mb05vdGUiLCJRUkNvZGUiLCJGaWxlRG93bmxvYWRPdXRsaW5lZCIsIkRvd25sb2FkSWNvbiIsIkVtYWlsT3V0bGluZWQiLCJFbWFpbEljb24iLCJUV09fSVRFTSIsIl90aWNrZXQkb3JkZXIzIiwic2VudENvbmZpcm1hdGlvbiIsInNldFNlbnRDb25maXJtYXRpb24iLCJpc1VzZXJPcmRlck93bmVyIiwib3duZXJfaWQiLCJpc1VzZXJUaWNrZXRPd25lciIsImNhbkVkaXRUaWNrZXREYXRhIiwiYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucyIsImlzQ29tcGxldGUiLCJvblNhdmUiLCJkb3dubG9hZFRpY2tldFBkZiIsIm9uU2VuZEVtYWlsIiwidGlja2V0RGV0YWlsQ29udGFpbmVyIiwicXJDb2RlIiwicXJfY29kZSIsInZpZXdCb3giLCJxck5vdGUiLCJpc192aXJ0dWFsIiwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lciIsImRvd25sb2FkQnRuIiwic2VuZEJ0biIsInNlbnQiLCJvcmRlck51bWJlciIsImF0dGVuZGVlQ29udGFpbmVyIiwiYXR0ZW5kZWVJbmZvVGl0bGUiLCJDb250YWluZXIiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMiLCJpc0FjdGl2ZSIsInJlZnVuZFJlcXVlc3RzIiwidGlja2V0U3RhdHVzQ29udGFpbmVyIiwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkIiwiYnV0dG9uSW5jb21wbGV0ZSIsImJ1dHRvblVuYXNzaWduZWQiLCJidXR0b25Db21wbGV0ZSIsImJ1dHRvbkNhbmNlbGxlZCIsIkFzc2lnbmVkVG9NZSIsIldpZGdldFRhYnMiLCJ0YWIiLCJzZXRUYWIiLCJ0aWNrZXRzRnVsbHlMb2FkZWQiLCJzZXRUaWNrZXRzRnVsbHlMb2FkZWQiLCJvcmRlcnNfcGVyX3BhZ2UiLCJvcmRlcnNQZXJQYWdlIiwidGlja2V0UGVyUGFnZSIsImhhbmRsZVRhYkNoYW5nZSIsIm5ld1RhYiIsImZldGNoQXNzaWduZWRUaWNrZXRzIiwiZmV0Y2hPcmRlclRpY2tldHMiLCJvcmRlclRpY2tldHNQcm9taXNlcyIsImN1cnJlbnRfcGFnZSIsImZldGNoUHJvbWlzZXMiLCJ0YWJXcmFwcGVyIiwiV2lkZ2V0V3JhcHBlciIsIm1lc3NhZ2VDYWxsYmFjayIsImxvYWRpbmciLCJhcGlFcnJvciIsInJlc2V0QXBpRXJyb3IiLCJmaWx0ZXJWYWx1ZSIsInNvcnRWYWx1ZSIsInRpY2tldHNUaXRsZVRleHQiLCJQcm92aWRlciIsInJ1biIsImN1cnJlbnRUaWNrZXQiLCJzbW9vdGhTY3JvbGxUbyIsInRhcmdldFNjcm9sbFRvcCIsImR1cmF0aW9uIiwic3RhcnRTY3JvbGxUb3AiLCJzY3JvbGxUb3AiLCJkaXN0YW5jZSIsInN0YXJ0VGltZSIsImFuaW1hdGlvblN0ZXAiLCJ0aW1lc3RhbXAiLCJlbGFwc2VkIiwicHJvZ3Jlc3MiLCJNYXRoIiwibWluIiwiZWFzZUluT3V0UXVhZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImNvbnRhaW5lcklkIiwiaXNWYWxpZCIsImVycm9yQXJyYXkiLCJlcnJvckNvdW50IiwiZWxlbWVudHNTb3J0ZWQiLCJyZXN1bHQiLCJlbGVtZW50IiwicXVlcnlTZWxlY3RvciIsImVsUmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImEiLCJiIiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250YWluZXJSZWN0IiwiZWxlbU9mZmVzdCIsImFuaW1hdGlvbkR1cmF0aW9uIiwiaXNUaWNrZXRSZWZ1bmRhYmxlIiwiU1RBVFVTX0NPTVBMRVRFIiwiU1RBVFVTX0lOQ09NUExFVEUiLCJTVEFUVVNfQ0FOQ0VMTEVEIiwiU1RBVFVTX1VOQVNTSUdORUQiLCJfdGlja2V0JHByb21vX2NvZGUiLCJfdGlja2V0JHRpY2tldF90eXBlMiIsIl90aWNrZXQkcHJvbW9fY29kZTIiLCJnZXRTdGF0dXMiLCJhbGxvd3NfdG9fZGVsZWdhdGUiLCJwcm9tb19jb2RlIiwiYWxsb3dzX3RvX3JlYXNzaWduIiwiaW5pdFJlYWN0STE4bmV4dCIsIkxhbmd1YWdlRGV0ZWN0b3IiLCJlbiIsImVzIiwidXNlIiwiaW5pdCIsImZhbGxiYWNrTG5nIiwiZGVidWciLCJyZXNvdXJjZXMiLCJ0cmFuc2xhdGlvbiIsImludGVycG9sYXRpb24iLCJlc2NhcGVWYWx1ZSIsIkxPR09VVF9VU0VSIiwiU1RBUlRfTE9BRElORyIsIlNUT1BfTE9BRElORyIsIlJFU0VUX0xPQURJTkciLCJoYXNMb2FkZWRBbGxEYXRhIiwiREVGQVVMVF9GSUxURVJfU1RBVEUiLCJERUZBVUxUX1NUQVRFIiwid2lkZ2V0TG9hZGluZyIsImN1cnJlbnRfdGFiIiwib3JkZXJzX3RvdGFsIiwidGlja2V0X2N1cnJlbnRfcGFnZSIsInRpY2tldF9sYXN0X3BhZ2UiLCJ0aWNrZXRfdG90YWwiLCJ1c2VyX3RpY2tldHNfdG90YWwiLCJXaWRnZXRSZWR1Y2VyIiwidG90YWwiLCJsYXN0X3BhZ2UiLCJmb3JtZXJPcmRlciIsIm8iLCJfZGF0YSQiLCJ1cGRhdGVkT3JkZXIiLCJ0aWNrZXRzX3BhZ2VfbGFzdCIsIm1vIiwiX3RpY2tldHNSZWZ1bmRSZXF1ZXN0IiwidXBkYXRlZFRpY2tldHMiLCJ0cnIiLCJ0aWNrZXREYXRhIiwibmV3T3JkZXJzIiwibmV3VGlja2V0cyIsImNvbmZpZ3VyZVN0b3JlIiwicGVyc2lzdFN0b3JlIiwicGVyc2lzdFJlZHVjZXIiLCJGTFVTSCIsIlJFSFlEUkFURSIsIlBBVVNFIiwiUEVSU0lTVCIsIlBVUkdFIiwiUkVHSVNURVIiLCJzdG9yYWdlIiwiY29tYmluZVJlZHVjZXJzIiwiZ2V0U3RvcmUiLCJjbGllbnRJZCIsImxvZ2luVXJsIiwicmVkdWNlcnMiLCJzdG9yZSIsInJlZHVjZXIiLCJtaWRkbGV3YXJlIiwiZ2V0RGVmYXVsdE1pZGRsZXdhcmUiLCJ0aHVuayIsImV4dHJhQXJndW1lbnQiLCJpbW11dGFibGVDaGVjayIsInNlcmlhbGl6YWJsZUNoZWNrIiwiaWdub3JlZEFjdGlvbnMiLCJ1c2VJbml0U3RvcmUiLCJjb25maWciLCJwZXJzaXN0b3IiLCJpbml0TG9nT3V0IiwiZ2V0QWNjZXNzVG9rZW4iLCJTZW50cnkiLCJjYXB0dXJlRXhjZXB0aW9uIiwiTEFTVF9IT1VSX09GXzI0X0hPVVIiLCJMQVNUX01JTlVURV9PRl9IT1VSIiwiT05FX0RBWSIsIlNUQVRVU19QRU5ESU5HIiwiU1RBVFVTX0VSUk9SIiwiU1RBVFVTX1BST0NFU1NJTkciLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkciLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCIsIlNUQVRVU19SRUZVTkRfUEVORElOR19MQyIsIlNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMiLCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDIiwiSkVTVF9USU1FT1VUX0lOX01JTExJU0VDIiwiT05FX0lURU0iLCJGSVZFX0lURU0iLCJTSVhfSVRFTSIsImxvY2FsZSIsImRlZmF1bHRPcHRpb25zIiwibWluaW11bUZyYWN0aW9uRGlnaXRzIiwibWF4aW11bUZyYWN0aW9uRGlnaXRzIiwiZm9ybWF0dGVyIiwiSW50bCIsIk51bWJlckZvcm1hdCIsImRhdGV0aW1lIiwidGltZVpvbmUiLCJ0eiIsInVuaXgiLCJhbW91bnQiLCJwdXJjaGFzZVRpY2tldFRvdGFsIiwiY3VycmVuY3lPYmplY3QiLCJ0aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUiLCJ0aWNrZXRUeXBlIiwidHQiLCJ0aWNrZXRfdHlwZV9pZCIsInB1cmNoYXNlVG90YWwiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJnZXRPcmRlclRpY2tldHMiLCJfb3JkZXJzJCIsIm9yZGVycyIsImdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyIsInRzIiwic2V0SG91cnMiLCJkZWZhdWx0Q3VycmVudFRpbWUiLCJyb3VuZCIsIkRhdGUiLCJnZXROb3ciLCJ0aW1lclN0YXRlIiwibm93VXRjIiwiY3VycmVudFBhZ2UiLCJjaGVja1N1bW1pdFBhc3QiLCJyZWFzc2lnbl9kYXRlIiwicmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSIsImVuZF9kYXRlIiwiY2hlY2tTdW1taXRTdGFydGVkIiwic3RhcnRfZGF0ZSIsImdldFN1bW1pdERheXNEaWZmIiwic3RhcnREYXkiLCJ0aW1lX3pvbmVfaWQiLCJlbmREYXkiLCJkYXlzIiwiZGlmZiIsImZvcm1hdFN0YXJ0RGF0ZSIsImZvcm1hdEVuZERhdGUiLCJ5ZWFyIiwibW9udGgiLCJzdGFydERhdGUiLCJlbmREYXRlIiwiZ2V0U3VtbWl0TG9jYXRpb24iLCJfc3VtbWl0JGxvY2F0aW9ucyIsImxvY2F0aW9uIiwibG9jYXRpb25zIiwibCIsImNsYXNzX25hbWUiLCJpc19tYWluIiwiY2l0eSIsImNvdW50cnkiLCJ1c2VTdW1taXREZXRhaWxzIiwiX3N1bW1pdCR0aW1lX3pvbmUiLCJfc3VtbWl0JHRpbWVfem9uZTIiLCJmb3JtYXR0ZWREYXRlIiwiZm9ybWF0dGVkUmVhc3NpZ25EYXRlIiwidGltZV96b25lIiwiZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSIsImlzUGFzdCIsImlzU3RhcnRlZCIsInN0YXR1c0RhdGEiLCJnZXRUaWNrZXRTdGF0dXNLZXkiLCJnZXRUaWNrZXRTdGF0dXNEYXRhIiwiaXNTdW1taXRQYXN0IiwiZ2V0VGlja2V0Um9sZSIsImZlYXR1cmUiLCJnZXRUaWNrZXRUeXBlIiwiZmluYWxfYW1vdW50IiwibmV0X3NlbGxpbmdfY29zdCIsInJyIiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMiIsImFsbFRpY2tldHMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNCIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczUiLCJnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczYiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM3IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzOCIsImdldFR5cGVWYWxpZGF0aW9uIiwic2NoZW1hIiwib25lT2YiLCJvZiIsInBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIiLCJvbmx5UmVsZXZhbnQiLCJzdWJRdWVzdGlvblNsdWciLCJzdWJBbnN3ZXIiLCJtYXRjaCIsImluY2x1ZGVBdHRlbmRlZUluZm8iLCJpbmNsdWRlRGlzY2xhaW1lciIsImJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hIiwiX3N1YlF1ZXN0aW9uJHN1Yl9xdWVzIiwic3ViUXVlc3Rpb24iLCJudWxsYWJsZSIsIndoZW4iLCJpcyIsInF1ZXN0aW9uQW5zIiwiYW5zVmFsdWVNYXRjaCIsInNjaCIsInN1YlJ1bGUiLCJkaXNjbGFpbWVyTWFuZGF0b3J5IiwibGF6eSIsInR5cGVFcnJvciIsIlBlcnNpc3RHYXRlIiwiTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQiLCJzdXBwb3J0RW1haWwiLCJoYW5kbGVCZWZvcmVMaWZ0IiwiVVJMU2VhcmNoUGFyYW1zIiwic2VhcmNoIiwiZmx1c2giLCJoYXMiLCJvbkJlZm9yZUxpZnQiXSwic291cmNlUm9vdCI6IiJ9
9622
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDaXVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5Qmp1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQzRmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2QjVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDMkU7Ozs7Ozs7Ozs7Ozs7Ozs7QUNMM0U7QUFDQTtBQUNBO0FBQ3dEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSHhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnSDs7Ozs7Ozs7Ozs7Ozs7OztBQ05oSDtBQUNBO0FBQ0E7QUFDd0U7Ozs7Ozs7Ozs7Ozs7OztBQ0h4RTtBQUNBO0FBQzBCOzs7Ozs7Ozs7Ozs7Ozs7O0FDRjFCO0FBQ0E7QUFDQTtBQUM0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNINUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDOFg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25COVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSaE07QUFDQTtBQUNBO0FBQ0E7QUFDZ0U7Ozs7Ozs7Ozs7Ozs7OztBQ0poRTtBQUNBO0FBQ21DOzs7Ozs7Ozs7OztBQ0ZuQzs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VDQUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7V0N0QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0E7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQSx5Q0FBeUMsd0NBQXdDO1dBQ2pGO1dBQ0E7V0FDQTs7Ozs7V0NQQTs7Ozs7V0NBQTtXQUNBO1dBQ0E7V0FDQSx1REFBdUQsaUJBQWlCO1dBQ3hFO1dBQ0EsZ0RBQWdELGFBQWE7V0FDN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3lDO0FBQ047QUFDSTtBQUN1QjtBQUNUO0FBQ2Q7QUFDa0I7QUFFRjtBQUFBO0FBRXZELE1BQU13Qix1QkFBdUIsR0FBSW5nQixLQUFLLElBQUs7RUFDekMsTUFBTTtJQUNKNlcsUUFBUTtJQUNSdUosWUFBWTtJQUNadnRDLE1BQU07SUFDTnlELFVBQVU7SUFDVnhELElBQUk7SUFDSjhqQyxRQUFRO0lBQ1JoOEI7RUFDRixDQUFDLEdBQUdvbEIsS0FBSztFQUVULE1BQU07SUFBRStXLEtBQUs7SUFBRVc7RUFBVSxDQUFDLEdBQUdGLG9EQUFZLENBQUM7SUFDeENYLFFBQVE7SUFDUnVKLFlBQVk7SUFDWnZ0QyxNQUFNO0lBQ05DLElBQUk7SUFDSndELFVBQVU7SUFDVnNnQyxRQUFRO0lBQ1JoOEI7RUFDRixDQUFDLENBQUM7RUFFRixNQUFNeWxDLGdCQUFnQixHQUFHQSxDQUFBLEtBQU07SUFDN0IsTUFBTXpwQyxNQUFNLEdBQUcsSUFBSTBwQyxlQUFlLENBQUM1aUMsTUFBTSxDQUFDNCtCLFFBQVEsQ0FBQ2lFLE1BQU0sQ0FBQztJQUMxRCxNQUFNQyxLQUFLLEdBQUc1cEMsTUFBTSxDQUFDNnBDLEdBQUcsQ0FBQyxZQUFZLENBQUM7SUFDdEMsSUFBSUQsS0FBSyxFQUFFekosS0FBSyxDQUFDdmtDLFFBQVEsQ0FBQztNQUFFaVksSUFBSSxFQUFFM2EsaURBQVc7TUFBRTJFLE9BQU8sRUFBRTtJQUFLLENBQUMsQ0FBQztFQUNqRSxDQUFDO0VBRUQyWixnREFBUyxDQUFDLE1BQU07SUFDZDJvQixLQUFLLENBQUN2a0MsUUFBUSxDQUFDSSx5REFBZSxDQUFDQyxNQUFNLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBQy9DLENBQUMsRUFBRSxDQUFDRCxNQUFNLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBRWxCLG9CQUNFK0wsc0RBQUEsQ0FBQzR4QixpREFBUTtJQUFDc0csS0FBSyxFQUFFQSxLQUFNO0lBQUFuM0IsUUFBQSxlQUNyQmYsc0RBQUEsQ0FBQ3FoQyx3RUFBVztNQUNWUSxZQUFZLEVBQUVMLGdCQUFpQjtNQUMvQmxRLE9BQU8sRUFBRSxJQUFLO01BQ2R1SCxTQUFTLEVBQUVBLFNBQVU7TUFBQTkzQixRQUFBLGVBRXJCZixzREFBQSxDQUFDZ21CLCtEQUFvQjtRQUFDNEIsV0FBVztRQUFBN21CLFFBQUEsZUFDL0JmLHNEQUFBLENBQUNveEIsaUVBQWEsSUFBRTtNQUFDLENBQ0c7SUFBQyxDQUNaO0VBQUMsQ0FDTixDQUFDO0FBRWYsQ0FBQztBQUVEa1EsdUJBQXVCLENBQUMvL0IsU0FBUyxHQUFHO0VBQ2xDeTJCLFFBQVEsRUFBRTM0QiwwREFBZ0I7RUFDMUJraUMsWUFBWSxFQUFFbGlDLDBEQUFnQjtFQUM5QnJMLE1BQU0sRUFBRXFMLDBEQUFnQjtFQUN4QjVILFVBQVUsRUFBRTRILDBEQUFnQjtFQUM1QnBMLElBQUksRUFBRW9MLDBEQUFnQjtFQUN0QjA0QixRQUFRLEVBQUUxNEIsMERBQWdCO0VBQzFCdEQsYUFBYSxFQUFFc0Qsd0RBQWNxQztBQUMvQixDQUFDO0FBRUQsaUVBQWU0L0IsdUJBQXVCLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9hY3Rpb25zLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Fzc2lnbkVRRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21EaWFsb2cvQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21EaWFsb2cvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tVGhlbWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvQXNzaWduZWRGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9CYWRnZUZlYXR1cmVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9GaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9GcmVlUGFpZEZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1Byb21vQ29kZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1NlYXJjaC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1NvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9TdGF0dXNGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9UaWNrZXRUeXBlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvRXJyb3JMYWJlbC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Mb2FkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9PcmRlclN1bW1hcnlUYWJsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvUmVmdW5kRW1haWxTdXBwb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0Fzc2lnbmVkVG9NZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0SXRlbS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kUmVxdWVzdGVkVGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvRGVsZWdhdGVGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9Bc3NpZ25IZWFkZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvSGVhZGVyL1JlYXNzaWduSGVhZGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL1JlYXNzaWduRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvQ29tcGFueUZpZWxkL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRUYWJzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFdyYXBwZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZUdldFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlU2Nyb2xsVG9FcnJvci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlVGlja2V0RGV0YWlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaTE4bi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvcmVkdWNlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvc3RvcmUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2F1dGguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3N1bW1pdFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy90aWNrZXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFdyYXBwZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYlwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlZHV4anMvdG9vbGtpdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBzZW50cnkvcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJmb3JtaWtcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpZHRva2VuLXZlcmlmaWVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwibW9tZW50LXRpbWV6b25lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicC1saW1pdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInByb3AtdHlwZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcXItY29kZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QvanN4LXJ1bnRpbWVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInl1cFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCAoKSA9PiB7XG5yZXR1cm4gIiwiaW1wb3J0IHtcbiAgYXV0aEVycm9ySGFuZGxlcixcbiAgY3JlYXRlQWN0aW9uLFxuICBkZWxldGVSZXF1ZXN0LFxuICBnZXRSZXF1ZXN0LFxuICBwdXRSZXF1ZXN0LFxuICBzdGFydExvYWRpbmcsXG4gIHN0b3BMb2FkaW5nXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IGdldElkVG9rZW4gfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgeyBvYmplY3RUb1F1ZXJ5U3RyaW5nIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiO1xuaW1wb3J0IElkVG9rZW5WZXJpZmllciBmcm9tIFwiaWR0b2tlbi12ZXJpZmllclwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGdldEFjY2Vzc1Rva2VuU2FmZWx5IH0gZnJvbSBcIi4vdXRpbHMvYXV0aFwiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRVJST1JfQ09ERVMsXG4gIEZJRlRZX1BFUl9QQUdFLFxuICBGSVJTVF9QQUdFLFxuICBQUk9NSVNFX0JBVENIX0xJTUlULFxuICBUQUJTXG59IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgUkVTRVRfU1RBVEUgPSBcIlJFU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfRklMVEVSID0gXCJSRVNFVF9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9BUElfRVJST1IgPSBcIlJFU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9TVEFURSA9IFwiU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgU0VUX0FQSV9FUlJPUiA9IFwiU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IENIQU5HRV9GSUxURVIgPSBcIkNIQU5HRV9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfU09SVCA9IFwiQ0hBTkdFX1NPUlRcIjtcblxuLy8gT1JERVJTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9VU0VSX09SREVSUyA9IFwiR0VUX09SREVSU1wiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9PUkRFUiA9IFwiUkVGVU5EX09SREVSXCI7XG5leHBvcnQgY29uc3QgU0VUX0FDVElWRV9PUkRFUl9JRCA9IFwiU0VUX0FDVElWRV9PUkRFUl9JRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9VU0VSX09SREVSUyA9IFwiRklMVEVSX1VTRVJfT1JERVJTXCI7XG5cbi8vIFRJQ0tFVFMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMgPSBcIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVCA9IFwiVVBEQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX1RJQ0tFVCA9IFwiUkVTRVRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9USUNLRVQgPSBcIlJFQ0VJVkVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSA9IFwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRVwiO1xuZXhwb3J0IGNvbnN0IEFTU0lHTl9USUNLRVQgPSBcIkFTU0lHTl9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBERUxFR0FURV9USUNLRVQgPSBcIkRFTEVHQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9USUNLRVQgPSBcIlJFRlVORF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFTkRfTk9USUZJQ0FUSU9OID0gXCJSRVNFTkRfTk9USUZJQ0FUSU9OXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVIgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TID0gXCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCIsXG4gIGV4dHJhUXVlc3Rpb25zOiBcImV4dHJhX3F1ZXN0aW9uc1wiXG59O1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQgPVxuICBcIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURURcIjtcblxuLy8gVVNFUiBDT05UU1xuZXhwb3J0IGNvbnN0IFNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9JRFBfUFJPRklMRSA9IFwiVVBEQVRFX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU0VUX1VTRVIgPSBcIlNFVF9VU0VSXCI7XG5cbi8vIFNVTU1JVCBDT05TVFNcbmV4cG9ydCBjb25zdCBTRVRfU1VNTUlUID0gXCJTRVRfU1VNTUlUXCI7XG5leHBvcnQgY29uc3QgR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TID0gXCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyA9IFwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1NcIjtcbmV4cG9ydCBjb25zdCBDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIkNMRUFSX01BUktFVElOR19TRVRUSU5HU1wiO1xuXG5leHBvcnQgY29uc3QgcmVzZXRUaWNrZXQgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldFN0YXRlID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9TVEFURSkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEZpbHRlciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfRklMVEVSKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RXJyb3IgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0FQSV9FUlJPUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRSZWR1Y2VyU3RhdGUgPSAoc3VtbWl0LCB1c2VyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9TVEFURSkoeyBzdW1taXQsIHVzZXIgfSkpO1xufTtcblxuLy8gRklMVEVSIC8gU09SVCBDT05TVEFOVFNcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0RBVEUgPSBcIkZJTFRFUl9WQVJfREFURVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSA9IFwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSA9IFwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEID0gXCJGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTID0gXCJGSUxURVJfVkFSX09XTkVSX1NUQVRVU1wiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfUFJPTU9DT0RFID0gXCJGSUxURVJfVkFSX1BST01PQ09ERVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfRlJFRV9QQUlEID0gXCJGSUxURVJfVkFSX0ZSRUVfUEFJRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSID0gXCJGSUxURVJfVkFSX09SREVSX05VTUJFUlwiO1xuXG4vLyBGSUxURVIgLyBTT1JUIEFDVElPTlNcbmV4cG9ydCBjb25zdCBjaGFuZ2VGaWx0ZXIgPSAoZmlsdGVyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKENIQU5HRV9GSUxURVIpKGZpbHRlcikpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoYW5nZVNvcnQgPSAoc29ydCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihDSEFOR0VfU09SVCkoc29ydCkpO1xufTtcblxuLy8gRklMVEVSL1NPUlQgUEFSU0VcbmNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlck9iaiwgY3VycmVudFRhYikgPT4ge1xuICBjb25zdCBmaWx0ZXIgPSBbXTtcbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX0RBVEUpIHtcbiAgICBmaWx0ZXIucHVzaChgY3JlYXRlZFtdJHtmaWx0ZXJPYmoubG93ZXJ9JiYke2ZpbHRlck9iai51cHBlcn1gKTtcbiAgfVxuICBpZiAoXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSAmJlxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX2JhZGdlX2ZlYXR1cmVzX2lkXCJcbiAgICAgICAgOiBcImJhZGdlX2ZlYXR1cmVzX2lkXCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLmpvaW4oXCJ8fFwiKX1gXG4gICAgKTtcbiAgfVxuICBpZiAoXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUgJiZcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRS5sZW5ndGggPiAwXG4gICkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcInRpY2tldHNfdHlwZV9pZFwiIDogXCJ0aWNrZXRfdHlwZV9pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUuam9pbihcInx8XCIpfWBcbiAgICApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX2Fzc2lnbmVkX3RvXCIgOiBcImFzc2lnbmVkX3RvXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX293bmVyX3N0YXR1c1wiIDogXCJvd25lcl9zdGF0dXNcIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PV05FUl9TVEFUVVN9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX0ZSRUVfUEFJRCkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPSBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwiYW1vdW50XCIgOiBcImZpbmFsX2Ftb3VudFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX0ke2ZpbHRlck9iai5GSUxURVJfVkFSX0ZSRUVfUEFJRCA9PT0gXCJGcmVlXCIgPyBcIj09MFwiIDogXCI+MFwifWBcbiAgICApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9QUk9NT0NPREUpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX3Byb21vX2NvZGVcIiA6IFwicHJvbW9fY29kZVwiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PUAke2ZpbHRlck9iai5GSUxURVJfVkFSX1BST01PQ09ERX1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSKSB7XG4gICAgZmlsdGVyLnB1c2goYG51bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9YCk7XG4gIH1cbiAgcmV0dXJuIGZpbHRlcjtcbn07XG5cbmNvbnN0IGdldFNvcnREaXJlY3Rpb24gPSAoZGlyZWN0aW9uKSA9PiAoZGlyZWN0aW9uID09PSBcImFzY1wiID8gXCIrXCIgOiBcIi1cIik7XG5cbi8vIHBheWxvYWQ6IHsgaHR0cENvZGUsIHRpdGxlLCBodG1sOiBjb250ZW50LCB0eXBlIH1cbmNvbnN0IGVycm9ySGFuZGxlck5vdGlmeSA9IChwYXlsb2FkLCBjYWxsYmFjaykgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQVBJX0VSUk9SKShwYXlsb2FkKSk7XG4gIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbn07XG5cbmNvbnN0IGN1c3RvbUF1dGhFcnJvckhhbmRsZXIgPSAoZXJyLCByZXMpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChhdXRoRXJyb3JIYW5kbGVyKGVyciwgcmVzLCBlcnJvckhhbmRsZXJOb3RpZnkpKTtcbn07XG5cbmNvbnN0IGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyID0gKHJlc3BvbnNlKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgY29uc3QgY29kZSA9IHJlc3BvbnNlLnN0YXR1cztcbiAgbGV0IG1zZztcbiAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gIHN3aXRjaCAoY29kZSkge1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MDNcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMudXNlcl9ub3RfYXV0aHpcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAxXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnNlc3Npb25fZXhwaXJlZFwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MTJcIl06XG4gICAgICBtc2cgPSBcIlwiO1xuICAgICAgT2JqZWN0LmVudHJpZXMocmVzcG9uc2UuZXJyb3JzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKE51bWJlci5pc05hTihrZXkpKSB7XG4gICAgICAgICAgbXNnID0gYCR7bXNnfSAke2tleX06IGA7XG4gICAgICAgIH1cblxuICAgICAgICBtc2cgPSBgJHttc2d9ICR7dmFsdWV9IDxicj5gO1xuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNTAwXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnNlcnZlcl9lcnJvclwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBtc2cgPSByZXNwb25zZS5zdGF0dXNUZXh0O1xuICB9XG5cbiAgZGlzcGF0Y2goZXJyb3JIYW5kbGVyTm90aWZ5KHsgdGl0bGU6IGkxOG4udChcImVycm9ycy5lcnJvclwiKSwgaHRtbDogbXNnIH0pKTtcbn07XG5cbi8vIE9SREVSUyBBQ1RJT05TXG5leHBvcnQgY29uc3QgZ2V0VXNlck9yZGVycyA9XG4gICh7XG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyID0ge30sXG4gICAgc29ydCA9IHt9XG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIG9yZGVyOiBcIi1jcmVhdGVkXCIsXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiXSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgVEFCUy5PUkRFUlMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1VTRVJfT1JERVJTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvbWVgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlcixcbiAgICAgIHsgZmlsdGVyLCBzb3J0IH1cbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2V0QWN0aXZlT3JkZXJJZCA9IChvcmRlcklkKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQUNUSVZFX09SREVSX0lEKShvcmRlcklkKSk7XG5cbi8vIFVTRVIgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHNldFVzZXIgPSAodXNlcikgPT4gKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1VTRVIpKHVzZXIpKTtcblxuLy8gVElDS0VUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJUaWNrZXRzID1cbiAgKHtcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIgPSB7fSxcbiAgICBzb3J0ID0ge31cbiAgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQsIHVzZXIgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHsgdXNlclByb2ZpbGUgfSA9IHVzZXI7XG4gICAgaWYgKCFzdW1taXQpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG4gICAgY29uc3QgZmllbGRzID0gW1xuICAgICAgXCJvcmRlci5pZFwiLFxuICAgICAgXCJvcmRlci5vd25lcl9maXJzdF9uYW1lXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2xhc3RfbmFtZVwiLFxuICAgICAgXCJvcmRlci5vd25lcl9lbWFpbFwiLFxuICAgICAgXCJvd25lci5pZFwiLFxuICAgICAgXCJvd25lci5lbWFpbFwiLFxuICAgICAgXCJvd25lci5maXJzdF9uYW1lXCIsXG4gICAgICBcIm93bmVyLmxhc3RfbmFtZVwiLFxuICAgICAgXCJvd25lci5zdGF0dXNcIixcbiAgICAgIFwiYmFkZ2Uubm9uZVwiXG4gICAgXTtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCIsIGBvcmRlcl9vd25lcl9pZDw+JHt1c2VyUHJvZmlsZS5pZH1gXSxcbiAgICAgIGV4cGFuZDogXCJvcmRlcixvd25lcix0aWNrZXRfdHlwZSxiYWRnZSxiYWRnZS5mZWF0dXJlc1wiLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBmaWVsZHM6IGZpZWxkcy5qb2luKFwiLFwiKSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lLGJhZGdlLmZlYXR1cmVzXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIFRBQlMuVElDS0VUUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9hbGwvdGlja2V0cy9tZWAsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRzQnlPcmRlciA9XG4gICh7XG4gICAgb3JkZXJJZCxcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIsXG4gICAgc29ydFxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW10sXG4gICAgICBmaWVsZHM6IFwiYmFkZ2Uubm9uZVwiLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxyZWZ1bmRfcmVxdWVzdHMucmVmdW5kZWRfdGF4ZXMscmVmdW5kX3JlcXVlc3RzLnJlZnVuZGVkX3RheGVzLnRheCxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIixcbiAgICAgIG9yZGVyOiBcIitpZFwiLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmUsYmFkZ2UuZmVhdHVyZXNcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgVEFCUy5USUNLRVRTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0c2AsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZXNlbmROb3RpZmljYXRpb24gPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCB7IG1lc3NhZ2UgfSA9IHRpY2tldDtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRVNFTkRfTk9USUZJQ0FUSU9OKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9hdHRlbmRlZS9yZWludml0ZWAsXG4gICAgICB7IG1lc3NhZ2UgfSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZFRpY2tldCA9XG4gICh7IHRpY2tldCB9KSA9PlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwicmVmdW5kX3JlcXVlc3RzLHRpY2tldF90eXBlXCIsXG4gICAgICBmaWVsZHM6IFwicmVmdW5kX3JlcXVlc3RzLnN0YXR1c1wiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUZVTkRfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9yZWZ1bmRgLFxuICAgICAge30sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZEJ1bGtUaWNrZXRzID1cbiAgKHsgdGlja2V0cyB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gpID0+IHtcbiAgICBjb25zdCBsaW1pdCA9IHBMaW1pdChQUk9NSVNFX0JBVENIX0xJTUlUKTtcbiAgICBjb25zdCBhbGxSZWZ1bmRUaWNrZXRDYWxscyA9IHRpY2tldHMubWFwKCh0aWNrZXQpID0+XG4gICAgICBsaW1pdCgoKSA9PiBkaXNwYXRjaChyZWZ1bmRUaWNrZXQoeyB0aWNrZXQgfSkpKVxuICAgICk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFsuLi5hbGxSZWZ1bmRUaWNrZXRDYWxsc10pXG4gICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWxseVJlcXVlc3RlZCA9IHJlc1xuICAgICAgICAgIC5maWx0ZXIoKHIpID0+IHIucmVzcG9uc2U/LnJlZnVuZF9yZXF1ZXN0cz8ubGVuZ3RoKVxuICAgICAgICAgIC5tYXAoKHIpID0+IHIucmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4gc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSk7XG4gIH07XG5cbi8vIHVwZGF0ZSB0aGUgdGlja2V0cyB0aGF0IGhhdmUgYmVlbiBzdWNlc3NmdWxseSByZWZ1bmRlZFxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPVxuICAodGlja2V0c1JlZnVuZFJlcXVlc3RlZCkgPT4gKGRpc3BhdGNoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQpKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpXG4gICAgKTtcblxuLy8gU1VNTUlUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldEV4dHJhUXVlc3Rpb25zID1cbiAgKGF0dGVuZGVlSWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBwYWdlOiAxLFxuICAgICAgcGVyX3BhZ2U6IEZJRlRZX1BFUl9QQUdFLFxuICAgICAgZXhwYW5kOiBcIipzdWJfcXVlc3Rpb25fcnVsZXMsKnN1Yl9xdWVzdGlvbiwqdmFsdWVzXCIsXG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBcInRpY2tldHNfZXhjbHVkZV9pbmFjdGl2ZXM9PXRydWVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9hdHRlbmRlZXMvJHthdHRlbmRlZUlkfS9hbGxvd2VkLWV4dHJhLXF1ZXN0aW9uc2A7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS50aGVuKCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0ID1cbiAgKHRpY2tldElkLCBvcmRlcklkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH1gO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRVRfVElDS0VUKSxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX1RJQ0tFVCksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmNvbnN0IG5vcm1hbGl6ZVRpY2tldCA9IChlbnRpdHkpID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IHsgLi4uZW50aXR5IH07XG5cbiAgaWYgKCFlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZCkge1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueSA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55X2lkID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQ7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZEVudGl0eTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoUHJvZmlsZSA9XG4gIChkYXRhLCBjb21wYW55LCB0aWNrZXRPd25lcikgPT5cbiAgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyB1cGRhdGVQcm9maWxlIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuXG4gICAgLy8gZW1haWwgc2hvdWxkIG1hdGNoICggb25seSB1cGRhdGUgbXkgcHJvZmlsZSBpcyB0aWNrZXQgYmVsb25ncyB0byBtZSEpXG4gICAgLy8gYW5kIGlmIHRoZSB0aWNrZXQgZG9lc24ndCBoYXZlIGEgbWFuYWdlclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgY2hhbmdlcyBpbiB0aGUgdGlja2V0IGRhdGEgdG8gdXBkYXRlIHRoZSBwcm9maWxlXG4gICAgY29uc3Qge1xuICAgICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfY29tcGFueVxuICAgIH0gPSBkYXRhO1xuICAgIGNvbnN0IGhhc01hbmFnZXIgPSB0aWNrZXRPd25lcj8ubWFuYWdlcj8uaWQgfHwgdGlja2V0T3duZXI/Lm1hbmFnZXJfaWQ7XG4gICAgY29uc3QgaXRzTWUgPSB1c2VyUHJvZmlsZS5lbWFpbCA9PT0gYXR0ZW5kZWVfZW1haWw7XG4gICAgY29uc3QgcHJvZmlsZUNoYW5nZWQgPVxuICAgICAgYXR0ZW5kZWVfY29tcGFueS5uYW1lICE9PSBjb21wYW55IHx8XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5maXJzdF9uYW1lIHx8XG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUgIT09IHVzZXJQcm9maWxlLmxhc3RfbmFtZTtcblxuICAgIGlmIChpdHNNZSAmJiAhaGFzTWFuYWdlciAmJiBwcm9maWxlQ2hhbmdlZCkge1xuICAgICAgY29uc3QgbmV3UHJvZmlsZSA9IHtcbiAgICAgICAgZmlyc3RfbmFtZTogYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgICAgbGFzdF9uYW1lOiBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICAgIGNvbXBhbnk6IGF0dGVuZGVlX2NvbXBhbnkubmFtZSB8fCBhdHRlbmRlZV9jb21wYW55XG4gICAgICB9O1xuXG4gICAgICAvLyB0aGlzIGlzIGEgY2FsbGJhY2sgbWV0aG9kIHRoYXQgdXBkYXRlcyB1c2VyUHJvZmlsZSBpbiBBUEkgYW5kIGV2ZW50LXNpdGVcbiAgICAgIHVwZGF0ZVByb2ZpbGUobmV3UHJvZmlsZSk7XG4gICAgfVxuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZVRpY2tldERldGFpbHMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGlkVG9rZW4gPSBnZXRJZFRva2VuKCk7XG4gICAgbGV0IGNvbXBhbnkgPSBcIlwiO1xuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB2ZXJpZmllciA9IG5ldyBJZFRva2VuVmVyaWZpZXIoKTtcbiAgICAgICAgY29uc3Qgand0ID0gdmVyaWZpZXIuZGVjb2RlKGlkVG9rZW4pO1xuICAgICAgICBjb21wYW55ID0gand0LnBheWxvYWQuY29tcGFueTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRFbnRpdHksXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChyZWZyZXNoUHJvZmlsZShhbnN3ZXJzLCBjb21wYW55LCB0aWNrZXQub3duZXIpKTtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgYXNzaWduQXR0ZW5kZWUgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGF0dGVuZGVlX2VtYWlsLCBtZXNzYWdlID0gbnVsbCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IHsgYXR0ZW5kZWVfZW1haWwgfTtcbiAgICBpZiAobWVzc2FnZSkgcGF5bG9hZC5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oQVNTSUdOX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICBwYXlsb2FkLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlYXNzaWduVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLCBvd25lciwgb3duZXIuZXh0cmFfcXVlc3Rpb25zLCBvcmRlci5zdW1taXRcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICB7fSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLnRoZW4oKCkgPT5cbiAgICAgIGRpc3BhdGNoKGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkpXG4gICAgKTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGRlbGVnYXRlVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWU6IGZpcnN0TmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZTogbGFzdE5hbWUsXG4gICAgICBhdHRlbmRlZV9lbWFpbDogZW1haWxcbiAgICB9O1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihERUxFR0FURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vZGVsZWdhdGVgLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzYXZlRXh0cmFRdWVzdGlvbnMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIGFuc3dlcnMsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRQREYgPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gb2JqZWN0VG9RdWVyeVN0cmluZyhwYXJhbXMpO1xuICAgIGNvbnN0IGFwaVVybCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9wZGY/JHtxdWVyeVN0cmluZ31gO1xuXG4gICAgcmV0dXJuIGZldGNoKGFwaVVybCwge1xuICAgICAgcmVzcG9uc2VUeXBlOiBcIkJsb2JcIixcbiAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9wZGZcIiB9XG4gICAgfSlcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmJsb2IoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC50aGVuKChwZGYpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwocGRmKTtcbiAgICAgICAgbGluay5ocmVmID0gdXJsO1xuICAgICAgICBsaW5rLmRvd25sb2FkID0gXCJ0aWNrZXQucGRmXCI7XG4gICAgICAgIGxpbmsuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudChcImNsaWNrXCIpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIpO1xuICB9O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi9Gb3JtRm9vdGVyXCI7XG5pbXBvcnQgdXNlU2Nyb2xsVG9FcnJvciBmcm9tIFwiLi4vLi4vaG9va3MvdXNlU2Nyb2xsVG9FcnJvclwiO1xuaW1wb3J0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgZnJvbSBcIi4uL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lclwiO1xuaW1wb3J0IHsgYnVpbGRWYWxpZGF0aW9uU2NoZW1hLCBwYXJzZUFuc3dlcnMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuY29uc3QgQXNzaWduRVFGb3JtID0gKHtcbiAgdGlja2V0LFxuICBzdW1taXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBvblN1Ym1pdCxcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiBwYXJzZUFuc3dlcnModGlja2V0Lm93bmVyLCBleHRyYVF1ZXN0aW9ucywge30sIGZhbHNlLCB0cnVlKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIGZhbHNlLFxuICAgICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeVxuICAgICksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGNvbnN0IHJlbGV2YW50QW5zd2VycyA9IHBhcnNlQW5zd2VycyhcbiAgICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWssIFwicmVhc3NpZ25EcmF3ZXJcIik7XG5cbiAgaWYgKGV4dHJhUXVlc3Rpb25zPy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8Qm94PlxuICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHMgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfSBmb3JtaWs9e2Zvcm1pa30gLz5cbiAgICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5leHRyYV9xdWVzdGlvbnNfZm9ybS5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuQXNzaWduRVFGb3JtLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25FUUZvcm07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBkZWZhdWx0V2lkdGggPSA5MDtcblxuY29uc3QgQ29weVRleHQgPSAoe1xuICB0ZXh0LFxuICB0b29sdGlwVGV4dCxcbiAgaGlkZUNvcHkgPSBmYWxzZSxcbiAgdHJ1bmNhdGVkID0gdHJ1ZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0b29sdGlwVGV4dFRvVXNlID0gdG9vbHRpcFRleHQgfHwgdChcImdlbmVyYWwuY29weV90b19jbGlwYm9hcmRcIik7XG4gIGNvbnN0IFt0b29sdGlwLCBzZXRUb29sdGlwXSA9IFJlYWN0LnVzZVN0YXRlKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICBjb25zdCBjbGFzc05hbWVzID0gYCR7dHJ1bmNhdGVkICYmIHN0eWxlcy50cnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuXG4gIGNvbnN0IGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgc2V0VG9vbHRpcCh0KFwiZ2VuZXJhbC5jb3BpZWRcIikpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0VG9vbHRpcCh0b29sdGlwVGV4dFRvVXNlKTtcbiAgICB9LCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3NOYW1lc30gc3R5bGU9e3sgd2lkdGggfX0+XG4gICAgICAgIHt0ZXh0fVxuICAgICAgPC9zcGFuPlxuICAgICAgeyFoaWRlQ29weSAmJiAoXG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXt0b29sdGlwfT5cbiAgICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb3B5SWNvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHl9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvcHktbnVtYmVyLWJ1dHRvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNvcHlUZXh0LnByb3BUeXBlcyA9IHtcbiAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdG9vbHRpcFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGhpZGVDb3B5OiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJ1bmNhdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmV2ZXJzZWQ6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weVRleHQ7XG4iLCJpbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IGRlZmF1bHRDb250ZXh0VmFsdWUgPSB7XG4gIHNldE1lc3NhZ2U6ICgpID0+IHt9LFxuICBzZXRNZXNzYWdlQ2FsbGJhY2s6ICgpID0+IHt9XG59O1xuXG5jb25zdCBDdXN0b21EaWFsb2dDb250ZXh0ID0gY3JlYXRlQ29udGV4dChkZWZhdWx0Q29udGV4dFZhbHVlKTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tRGlhbG9nQ29udGV4dDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIERpYWxvZyxcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nQ29udGVudFRleHQsXG4gIERpYWxvZ1RpdGxlXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IEN1c3RvbURpYWxvZyA9ICh7IG9wZW4sIG9uQ2xvc2UsIHRpdGxlLCBib2R5IH0pID0+IChcbiAgPERpYWxvZ1xuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJhbGVydC1kaWFsb2ctdGl0bGVcIlxuICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICA+XG4gICAgPERpYWxvZ1RpdGxlIGlkPVwiYWxlcnQtZGlhbG9nLXRpdGxlXCI+e3RpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICA8RGlhbG9nQ29udGVudFRleHRcbiAgICAgICAgaWQ9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGJvZHkgfX1cbiAgICAgIC8+XG4gICAgPC9EaWFsb2dDb250ZW50PlxuICA8L0RpYWxvZz5cbik7XG5cbkN1c3RvbURpYWxvZy5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGJvZHk6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbURpYWxvZztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxubGV0IGRhcmtDb2xvciA9IFwiXCI7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAvLyBHZXQgdGhlIHJvb3QgZWxlbWVudFxuICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gIC8vIFJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgQ1NTIHZhcmlhYmxlXG4gIGRhcmtDb2xvciA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICBcIi0tY29sb3JfYmFja2dyb3VuZF9kYXJrXCJcbiAgKTtcbn1cblxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHBhbGV0dGU6IHtcbiAgICBwcmltYXJ5OiB7XG4gICAgICBtYWluOiBkYXJrQ29sb3JcbiAgICB9LFxuICAgIHRleHQ6IHtcbiAgICAgIHByaW1hcnk6IFwiIzAwMDAwMERFXCIsXG4gICAgICBzZWNvbmRhcnk6IFwiIzAwMDAwMDk5XCJcbiAgICB9XG4gIH0sXG4gIHR5cG9ncmFwaHk6IHtcbiAgICBib2R5MToge1xuICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICB9LFxuICAgIGg1OiB7XG4gICAgICBmb250U2l6ZTogXCIxLjZlbVwiLFxuICAgICAgZm9udFdlaWdodDogNDAwLFxuICAgICAgXCImLk11aVR5cG9ncmFwaHktZ3V0dGVyQm90dG9tXCI6IHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiBcIjIwcHhcIlxuICAgICAgfVxuICAgIH0sXG4gICAgaDY6IHtcbiAgICAgIGZvbnRTaXplOiBcIjEuNGVtXCIsXG4gICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICBcIiYuTXVpVHlwb2dyYXBoeS1ndXR0ZXJCb3R0b21cIjoge1xuICAgICAgICBtYXJnaW5Cb3R0b206IFwiMjBweFwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjb21wb25lbnRzOiB7XG4gICAgTXVpRm9ybUhlbHBlclRleHQ6IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICBmb250U2l6ZTogXCIuOGVtXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpQnV0dG9uOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiMWVtXCIsXG4gICAgICAgICAgZm9udFdlaWdodDogNTAwLFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IFwiMjJweFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aVRhYjoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIjE0cHhcIixcbiAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOTlcIixcbiAgICAgICAgICBcIiYuTXVpLXNlbGVjdGVkXCI6IHtcbiAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpVGFiczoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgaW5kaWNhdG9yOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgQ3VzdG9tVGhlbWUgPSAoeyBjaGlsZHJlbiB9KSA9PiAoXG4gIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+e2NoaWxkcmVufTwvVGhlbWVQcm92aWRlcj5cbik7XG5cbkN1c3RvbVRoZW1lLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbVRoZW1lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWxcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuICBjb25zdCBxdWVzdGlvbk1heFZhbHVlcyA9IHF1ZXN0aW9uLm1heF9zZWxlY3RlZF92YWx1ZXM7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICBjb25zdCBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UgPSAoY2hlY2tlZCwgdmFsKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFucyA9IHZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IG1heFNlbGVjdGlvblJlYWNoZWQgPVxuICAgICAgcXVlc3Rpb25NYXhWYWx1ZXMgIT09IDAgJiYgY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBtYXJnaW49XCJub3JtYWxcIiBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIHN4PXt7IGFsaWduSXRlbXM6IFwiZmxleC1zdGFydFwiIH19XG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICAgICAgc3g9e3sgbWFyZ2luVG9wOiAtMSB9fVxuICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5ib29sLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIElucHV0TGFiZWwsIE1lbnVJdGVtLCBTZWxlY3QgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWRcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxJbnB1dExhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+e3F1ZXN0aW9uTGFiZWx9PC9JbnB1dExhYmVsPlxuICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgbGFiZWxJZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGlkPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICBzdHlsZT17eyBtYXJnaW5Cb3R0b206IDIwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxNZW51SXRlbSBrZXk9e29wLmxhYmVsfSB2YWx1ZT17b3AudmFsdWV9PlxuICAgICAgICAgICAgICB7b3AubGFiZWx9XG4gICAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1NlbGVjdD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkRyb3Bkb3duUXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93blF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHQsXG4gIEZvcm1MYWJlbCxcbiAgUmFkaW8sXG4gIFJhZGlvR3JvdXBcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZC50b1N0cmluZygpXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+e3F1ZXN0aW9uTGFiZWx9PC9Gb3JtTGFiZWw+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICAgIDxSYWRpb0dyb3VwXG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgdmFsdWU9e29wLnZhbHVlfVxuICAgICAgICAgICAgICBjb250cm9sPXs8UmFkaW8gLz59XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblJhZGlvTGlzdFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBUZXh0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUdyb3VwPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuVGV4dFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tSdWxlID0gKHZhbHVlLCBydWxlKSA9PiB7XG4gIGNvbnN0IHZhbHVlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlcztcblxuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKCF2YWx1ZS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBsZXQgcmVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiO1xuICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBpZiAocnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiKSB7XG4gICAgICAgIHJlcyA9IHJlcyAmJiB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE9yXG4gICAgICAgIHJlcyA9IHJlcyB8fCB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIHJldHVybiB2YWx1ZXMuaW5jbHVkZXModmFsdWU/LnRvU3RyaW5nKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrVmlzaWJpbGl0eSA9IChydWxlLCBydWxlUmVzdWx0KSA9PiB7XG4gIGlmIChydWxlLnZpc2liaWxpdHkgPT09IFwiVmlzaWJsZVwiKSB7XG4gICAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgICAgcmV0dXJuICEhcnVsZVJlc3VsdDtcbiAgICB9XG4gICAgLy8gTm9uIEVxdWFsXG4gICAgcmV0dXJuICFydWxlUmVzdWx0O1xuICB9XG4gIC8vIG5vdCB2aXNpYmxlXG4gIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICByZXR1cm4gIXJ1bGVSZXN1bHQ7XG4gIH1cbiAgcmV0dXJuICEhcnVsZVJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCB0b1NsdWcgPSAodGV4dCwgcXVlc3Rpb25JZCkgPT4ge1xuICBjb25zdCB0ZXh0TEMgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBgJHt0ZXh0TEMucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCBcIl9cIil9XyR7cXVlc3Rpb25JZH1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gKHEpID0+XG4gIC8vIHJlcGxhY2UgbGluZSBicmVha3MgYW5kIHJlbW92ZSBvdXRlciA8cD5cbiAgcT8ubGFiZWw/LnJlcGxhY2UoL1xcbi9nLCBcIiBcIikucmVwbGFjZSgvPHA+KC4qKTxcXC9wPi9naSwgXCIkMVwiKTtcblxuZXhwb3J0IGNvbnN0IGlzQW5zd2VyZWQgPSAoYW5zd2VyKSA9PiB7XG4gIGlmICghYW5zd2VyKSByZXR1cm4gZmFsc2U7XG4gIC8vIGNoZWNrIHR5cGVcbiAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSkgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJudW1iZXJcIikgcmV0dXJuIGFuc3dlciA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcImJvb2xlYW5cIikgcmV0dXJuIGFuc3dlcjtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrSWZWYWx1ZU1hdGNoID0gKGFuc3dlciwgY29tcGFyZVZhbCkgPT4ge1xuICBjb25zdCBhbnN3ZXJBcnJheSA9IEFycmF5LmlzQXJyYXkoYW5zd2VyKSA/IGFuc3dlciA6IFthbnN3ZXJdO1xuXG4gIHJldHVybiBhbnN3ZXJBcnJheS5zb21lKCh2KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcGFyZVZhbCkpIHtcbiAgICAgIHJldHVybiBjb21wYXJlVmFsLmluY2x1ZGVzKHYpO1xuICAgIH1cbiAgICByZXR1cm4gdiA9PT0gY29tcGFyZVZhbDtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluaXRpYWxWYWx1ZSA9IChxKSA9PiB7XG4gIHN3aXRjaCAocS50eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWx1ZSA9IChhbnMsIHR5cGUpID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gYW5zID09PSBcInRydWVcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gYW5zPy5zcGxpdChcIixcIikgfHwgW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIGFucyB8fCBcIlwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBhbnMgfHwgbnVsbDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGFucztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCA9IChhbnN3ZXJzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgLi4uZXh0cmFfcXVlc3Rpb25zXG4gIH0gPSBhbnN3ZXJzO1xuXG4gIGNvbnN0IGZvcm1hdHRlZEVRID0gT2JqZWN0LmVudHJpZXMoZXh0cmFfcXVlc3Rpb25zKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICBxdWVzdGlvbl9pZDogcGFyc2VJbnQoa2V5LnNwbGl0KFwiX1wiKS5wb3AoKSwgMTApLFxuICAgIGFuc3dlcjogdmFsdWU/LnRvU3RyaW5nKCkgfHwgbnVsbFxuICB9KSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgZXh0cmFfcXVlc3Rpb25zOiBmb3JtYXR0ZWRFUVxuICB9O1xufTtcbiIsImV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dCA9IFwiVGV4dFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0QXJlYSA9IFwiVGV4dEFyZWFcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tib3ggPSBcIkNoZWNrQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCA9IFwiUmFkaW9CdXR0b25MaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvbWJvQm94ID0gXCJDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QgPSBcIkNoZWNrQm94TGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3ggPSBcIkNvdW50cnlDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiA9IFwiUmFkaW9CdXR0b25cIjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgdG9TbHVnLFxuICBpc0Fuc3dlcmVkLFxuICBjaGVja1Zpc2liaWxpdHksXG4gIGNoZWNrUnVsZVxufSBmcm9tIFwiLi9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCxcbiAgUXVlc3Rpb25UeXBlX1RleHQsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCBUZXh0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZFwiO1xuXG5jb25zdCBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gKHF1ZXN0aW9uVHlwZSkgPT4ge1xuICBzd2l0Y2ggKHF1ZXN0aW9uVHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHRBcmVhOlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHQ6IHtcbiAgICAgIHJldHVybiBUZXh0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6IHtcbiAgICAgIHJldHVybiBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDoge1xuICAgICAgcmV0dXJuIFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDoge1xuICAgICAgcmV0dXJuIERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIFJlYWN0LkZyYWdtZW50O1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgRXh0cmFRdWVzdGlvbnNGaWVsZHMgPSAoe1xuICBleHRyYVF1ZXN0aW9ucyxcbiAgY2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uc1wiLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvblwiLFxuICByZWFkT25seSA9IGZhbHNlLFxuICBhbGxvd0VkaXQgPSB0cnVlLFxuICBmb3JtaWtcbn0pID0+IHtcbiAgY29uc3QgcmVuZGVyUnVsZSA9IChydWxlLCBxdWVzdGlvblNsdWcpID0+IHtcbiAgICBjb25zdCBydWxlUmVzdWx0ID0gY2hlY2tSdWxlKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSwgcnVsZSk7XG4gICAgY29uc3QgaXNWaXNpYmxlID0gY2hlY2tWaXNpYmlsaXR5KHJ1bGUsIHJ1bGVSZXN1bHQpO1xuXG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICByZXR1cm4gcmVuZGVyUXVlc3Rpb24ocnVsZS5zdWJfcXVlc3Rpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlclF1ZXN0aW9uID0gKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICAvLyBkaXNhYmxlIGZpZWxkIGlmIGVkaXQgaXNuJ3QgYWxsb3dlZCBhbmQgdGhlIHF1ZXN0aW9ucyBpcyBhbnN3ZXJlZFxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPVxuICAgICAgKCFhbGxvd0VkaXQgJiYgaXNBbnN3ZXJlZChmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10pKSB8fCByZWFkT25seTtcbiAgICBjb25zdCBRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudChxLnR5cGUpO1xuXG4gICAgY29uc3QgZm9ybWlrUHJvcHMgPSB7XG4gICAgICB2YWx1ZTogZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLFxuICAgICAgb25DaGFuZ2U6IGZvcm1pay5oYW5kbGVDaGFuZ2UsXG4gICAgICBvbkJsdXI6IGZvcm1pay5oYW5kbGVCbHVyLFxuICAgICAgZXJyb3I6XG4gICAgICAgIGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgQm9vbGVhbihmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10pLFxuICAgICAgaGVscGVyVGV4dDogZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBzZXRGaWVsZFZhbHVlOiBmb3JtaWsuc2V0RmllbGRWYWx1ZVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFF1ZXN0aW9uRmllbGRDb21wb25lbnRcbiAgICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICAgIHF1ZXN0aW9uPXtxfVxuICAgICAgICBxdWVzdGlvbkNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgICAgIGlzRGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgIHsuLi5mb3JtaWtQcm9wc31cbiAgICAgID5cbiAgICAgICAge3Euc3ViX3F1ZXN0aW9uX3J1bGVzPy5tYXAoKHJ1bGUpID0+IHJlbmRlclJ1bGUocnVsZSwgcXVlc3Rpb25TbHVnKSl9XG4gICAgICA8L1F1ZXN0aW9uRmllbGRDb21wb25lbnQ+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2V4dHJhUXVlc3Rpb25zLm1hcChyZW5kZXJRdWVzdGlvbil9PC9kaXY+O1xufTtcblxuRXh0cmFRdWVzdGlvbnNGaWVsZHMucHJvcFR5cGVzID0ge1xuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFsbG93RWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRXh0cmFRdWVzdGlvbnNGaWVsZHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgQXNzaWduZWRGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQ6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIk1lXCIsIGxhYmVsOiBcIk1lXCIgfSxcbiAgICB7IHZhbHVlOiBcIlNvbWVvbmVFbHNlXCIsIGxhYmVsOiBcIlNvbWVvbmUgRWxzZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJOb2JvZHlcIiwgbGFiZWw6IFwiTm9ib2R5XCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkFzc2lnbmVkXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkFzc2lnbmVkRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25lZEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENoZWNrYm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBCYWRnZUZlYXR1cmVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQ6IHsgYmFkZ2VfZmVhdHVyZXNfdHlwZXMgfSxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBmaWx0ZXJWYWx1ZXM/LmluY2x1ZGVzKHZhbHVlKVxuICAgICAgPyBmaWx0ZXJWYWx1ZXMuZmlsdGVyKChmKSA9PiBmICE9PSB2YWx1ZSlcbiAgICAgIDogWy4uLmZpbHRlclZhbHVlcywgdmFsdWVdO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBuZXdGaWx0ZXJzXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkJhZGdlIEZlYXR1cmVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge2JhZGdlX2ZlYXR1cmVzX3R5cGVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxCb3ggc3g9e3sgcHk6IDEgfX0ga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHtiZi5uYW1lfX1gfT5cbiAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gaGFuZGxlRmlsdGVyQ2hhbmdlKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCIjMjE5NkYzXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYWJlbD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQmFkZ2VGZWF0dXJlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBCYWRnZUZlYXR1cmVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBGaWx0ZXJMaXN0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCI7XG5pbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBCdXR0b24sXG4gIENhcmQsXG4gIENhcmRIZWFkZXIsXG4gIERpdmlkZXIsXG4gIFBhcGVyXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBjb25uZWN0IH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgQmFkZ2VGZWF0dXJlRmlsdGVyIGZyb20gXCIuL0JhZGdlRmVhdHVyZUZpbHRlclwiO1xuaW1wb3J0IHtcbiAgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLFxuICBGSUxURVJfVkFSX0ZSRUVfUEFJRCxcbiAgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMsXG4gIEZJTFRFUl9WQVJfUFJPTU9DT0RFLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCxcbiAgRklMVEVSX1ZBUl9USUNLRVRfVFlQRVxufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFRpY2tldFR5cGVGaWx0ZXIgZnJvbSBcIi4vVGlja2V0VHlwZUZpbHRlclwiO1xuaW1wb3J0IEFzc2lnbmVkRmlsdGVyIGZyb20gXCIuL0Fzc2lnbmVkRmlsdGVyXCI7XG5pbXBvcnQgU3RhdHVzRmlsdGVyIGZyb20gXCIuL1N0YXR1c0ZpbHRlclwiO1xuaW1wb3J0IEZyZWVQYWlkRmlsdGVyIGZyb20gXCIuL0ZyZWVQYWlkRmlsdGVyXCI7XG5pbXBvcnQgUHJvbW9Db2RlRmlsdGVyIGZyb20gXCIuL1Byb21vQ29kZUZpbHRlclwiO1xuXG5jb25zdCBGaWx0ZXIgPSAoeyBvbkZpbHRlciwgb25SZXNldCwgZmlsdGVyIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0ZpbHRlckxpc3QsIHNldFNob3dGaWx0ZXJMaXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dEYXRlcGlja2VyLCBzZXRTaG93RGF0ZXBpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmaWx0ZXJOdW1BY3RpdmUsIHNldEZpbHRlck51bUFjdGl2ZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgZmlsdGVyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoZmlsdGVyUmVmLmN1cnJlbnQgJiYgIWZpbHRlclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIGlmIChzaG93RmlsdGVyTGlzdCkge1xuICAgICAgICBzZXRTaG93RmlsdGVyTGlzdChmYWxzZSk7XG4gICAgICAgIHNldFNob3dEYXRlcGlja2VyKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dGaWx0ZXJMaXN0XSk7XG5cbiAgY29uc3QgTUFSR0lOX1JJR0hUX1dJVEhfQkFER0UgPSAxO1xuICBjb25zdCBBRERfRklMVEVSX05VTUJFUiA9IDE7XG5cbiAgY29uc3QgY2FsY3VsYXRlQWN0aXZlRmlsdGVycyA9IChmaWx0ZXJzKSA9PiB7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBPYmplY3QuZW50cmllcyhmaWx0ZXJzKS5mb3JFYWNoKChbLCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBjb3VudCArPSB2YWx1ZS5sZW5ndGg7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS50cmltKCkgIT09IFwiXCIpIHtcbiAgICAgICAgY291bnQgKz0gQUREX0ZJTFRFUl9OVU1CRVI7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiAmJiB2YWx1ZSA+IDApIHtcbiAgICAgICAgY291bnQgKz0gQUREX0ZJTFRFUl9OVU1CRVI7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvdW50O1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0RmlsdGVyTnVtQWN0aXZlKGNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMoZmlsdGVyKSk7XG4gIH0sIFtmaWx0ZXJdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0ZpbHRlckxpc3QoIXNob3dGaWx0ZXJMaXN0KTtcbiAgICBzZXRTaG93RGF0ZXBpY2tlcighc2hvd0RhdGVwaWNrZXIpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlclJlc2V0ID0gKCkgPT4ge1xuICAgIHNldEZpbHRlck51bUFjdGl2ZSgwKTtcbiAgICBvblJlc2V0KCk7XG4gICAgdG9nZ2xlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckNvbnRhaW5lcn0gcmVmPXtmaWx0ZXJSZWZ9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgICAgb25DbGljaz17dG9nZ2xlfVxuICAgICAgPlxuICAgICAgICA8QmFkZ2VcbiAgICAgICAgICBiYWRnZUNvbnRlbnQ9e2ZpbHRlck51bUFjdGl2ZX1cbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIHN4PXt7IG1yOiBmaWx0ZXJOdW1BY3RpdmUgPiAwID8gTUFSR0lOX1JJR0hUX1dJVEhfQkFER0UgOiBcIlwiIH19XG4gICAgICAgID5cbiAgICAgICAgICA8RmlsdGVyTGlzdEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckljb259IC8+XG4gICAgICAgIDwvQmFkZ2U+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckxhYmVsfT57dChcImZpbHRlci5maWx0ZXJcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZmlsdGVyTGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfSAke1xuICAgICAgICAgIHNob3dGaWx0ZXJMaXN0ID8gc3R5bGVzLnNob3dGaWx0ZXJMaXN0IDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgID5cbiAgICAgICAgPFBhcGVyIGVsZXZhdGlvbj17OH0gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ2hlY2tib3hDb250YWluZXJ9PlxuICAgICAgICAgIDxDYXJkIHZhcmlhbnQ9XCJvdXRsaW5lZFwiPlxuICAgICAgICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgICAgICAgdGl0bGU9XCJGaWx0ZXJzXCJcbiAgICAgICAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVGaWx0ZXJSZXNldH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsZWFuQnV0dG9ufVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt0KFwiZmlsdGVyLmNsZWFyXCIpfVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgIDxCYWRnZUZlYXR1cmVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEFzc2lnbmVkRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFN0YXR1c0ZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX09XTkVSX1NUQVRVU119XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxUaWNrZXRUeXBlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8UHJvbW9Db2RlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEZyZWVQYWlkRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlclxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzLCB7fSkoRmlsdGVyKTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9GUkVFX1BBSUQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBGcmVlUGFpZEZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX0ZSRUVfUEFJRDogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiRnJlZVwiLCBsYWJlbDogXCJGcmVlXCIgfSxcbiAgICB7IHZhbHVlOiBcIlBhaWRcIiwgbGFiZWw6IFwiUGFpZFwiIH1cbiAgXTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyID0gdmFsdWU7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXTogbmV3RmlsdGVyXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJGcmVlIC8gUGFpZFwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5GcmVlUGFpZEZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRnJlZVBhaWRGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgVGV4dEZpZWxkXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9QUk9NT0NPREUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBQcm9tb0NvZGVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9QUk9NT0NPREU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcbiAgY29uc3QgW3Byb21vQ29kZSwgc2V0UHJvbW9Db2RlXSA9IHVzZVN0YXRlKGZpbHRlclZhbHVlcyB8fCBcIlwiKTtcblxuICBjb25zdCBkZWJvdW5jZVRpbWVyID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBERUJPVU5DRV9WQUxVRSA9IDUwMDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFByb21vQ29kZShmaWx0ZXJWYWx1ZXMgfHwgXCJcIik7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcyk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYpID0+IHtcbiAgICBjb25zdCBuZXdQcm9tb0NvZGUgPSBldi50YXJnZXQudmFsdWU7XG4gICAgLy8gdXBkYXRlIGxvY2FsIHN0YXRlIHNvIHRoZSBpbnB1dCByZWZsZWN0cyBjaGFuZ2VzXG4gICAgc2V0UHJvbW9Db2RlKG5ld1Byb21vQ29kZSk7XG5cbiAgICAvLyByZW1vdmUgY3VycmVudCBkZWJvdW5jZVxuICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIC8vIGRlYm91bmNlIHNldCB0byA1MDAgbXNcbiAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIG9uRmlsdGVyKHtcbiAgICAgICAgW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXTogbmV3UHJvbW9Db2RlXG4gICAgICB9KTtcbiAgICB9LCBERUJPVU5DRV9WQUxVRSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyByZW1vdmUgZGVib3VuY2Ugb24gcmVsb2FkXG4gICAgaWYgKGRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudCk7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJQcm9tbyBDb2RlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBweTogMVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBwcm9tbyBjb2RlXCJcbiAgICAgICAgICAgIHZhbHVlPXtwcm9tb0NvZGV9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfVxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5Qcm9tb0NvZGVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFByb21vQ29kZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbnB1dEJhc2UgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTZWFyY2hDb250YWluZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgbWFyZ2luUmlnaHQ6IFwiMFwiLFxuICBtYXJnaW5MZWZ0OiBcIjBcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxuICBkaXNwbGF5OiBcImJsb2NrXCJcbn0pKTtcbmNvbnN0IFNlYXJjaEljb25XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIlxufSkpO1xuY29uc3QgU3R5bGVkSW5wdXRCYXNlID0gc3R5bGVkKElucHV0QmFzZSkoKCkgPT4gKHtcbiAgY29sb3I6IFwiaW5oZXJpdFwiLFxuICBib3JkZXJCb3R0b206IFwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40MilcIixcbiAgcGFkZGluZ0xlZnQ6IFwiMjVweFwiLFxuICBwYWRkaW5nUmlnaHQ6IFwiMjVweFwiLFxuICBmb250U2l6ZTogXCIxZW1cIlxufSkpO1xuY29uc3QgQ2xvc2VJY29uV3JhcHBlciA9IHN0eWxlZChDbG9zZUljb24pKCgpID0+ICh7XG4gIHBhZGRpbmc6IFwiMnB4XCIsXG4gIGZvbnRTaXplOiBcIjEuNWVtXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogXCIwXCIsXG4gIHJpZ2h0OiBcIjBcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICBjdXJzb3I6IFwicG9pbnRlclwiLFxuICB6SW5kZXg6IFwiMTAwMFwiXG59KSk7XG5cbmNvbnN0IFNlYXJjaCA9ICh7IG9uU2VhcmNoIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0Nsb3NlLCBzZXRTaG93Q2xvc2VdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBvbktleURvd24gPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBrZXksXG4gICAgICBuYXRpdmVFdmVudDoge1xuICAgICAgICB0YXJnZXQ6IHsgdmFsdWUgfVxuICAgICAgfVxuICAgIH0gPSBldmVudDtcbiAgICBpZiAoa2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgIG9uU2VhcmNoKHtcbiAgICAgICAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogdmFsdWVcbiAgICAgIH0pO1xuICAgICAgc2V0U2hvd0Nsb3NlKHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVzZXRTZWFyY2ggPSAoKSA9PiB7XG4gICAgc2V0U2VhcmNoVmFsdWUoXCJcIik7XG4gICAgb25TZWFyY2goe1xuICAgICAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogXCJcIlxuICAgIH0pO1xuICAgIHNldFNob3dDbG9zZSh0cnVlKTtcbiAgICBzZXRTaG93Q2xvc2UoZmFsc2UpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8U2VhcmNoQ29udGFpbmVyPlxuICAgICAgICB7c2hvd0Nsb3NlICYmIChcbiAgICAgICAgICA8Q2xvc2VJY29uV3JhcHBlciBvbkNsaWNrPXtyZXNldFNlYXJjaH0+XG4gICAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgICAgPC9DbG9zZUljb25XcmFwcGVyPlxuICAgICAgICApfVxuICAgICAgICA8U2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgICAgPFNlYXJjaEljb24gLz5cbiAgICAgICAgPC9TZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZElucHV0QmFzZVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwib3JkZXJfc2VhcmNoLm9yZGVyX251bWJlclwiKX1cbiAgICAgICAgICBpbnB1dFByb3BzPXt7IFwiYXJpYS1sYWJlbFwiOiBcInNlYXJjaFwiIH19XG4gICAgICAgICAgdmFsdWU9e3NlYXJjaFZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoVmFsdWUoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAvPlxuICAgICAgPC9TZWFyY2hDb250YWluZXI+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5TZWFyY2gucHJvcFR5cGVzID0ge1xuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlYXJjaDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFBhcGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbXBvcnRFeHBvcnRJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBTb3J0ID0gKHsgb25Tb3J0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd1NvcnQsIHNldFNob3dTb3J0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc29ydFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlU29ydENsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChzb3J0UmVmLmN1cnJlbnQgJiYgIXNvcnRSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBzZXRTaG93U29ydChmYWxzZSk7XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dTb3J0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dTb3J0KCFzaG93U29ydCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5zb3J0Q29udGFpbmVyfSBvbkNsaWNrPXt0b2dnbGV9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIHJlZj17c29ydFJlZn1cbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgPlxuICAgICAgICA8SW1wb3J0RXhwb3J0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuc29ydEljb259IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRMYWJlbH0+e3QoXCJzb3J0LnNvcnRcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIHtzaG93U29ydCAmJiAoXG4gICAgICAgIDxQYXBlclxuICAgICAgICAgIGVsZXZhdGlvbj17OH1cbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5zb3J0TGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfWB9XG4gICAgICAgID5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU29ydCh7IGRpcmVjdGlvbjogXCJkZXNjXCIsIG5hbWU6IFwiY3JlYXRlZFwiIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwic29ydC5uZXdfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNvcnQoeyBkaXJlY3Rpb246IFwiYXNjXCIsIG5hbWU6IFwiY3JlYXRlZFwiIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwic29ydC5vbGRfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvUGFwZXI+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU29ydDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTdGF0dXNGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVM6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIkluY29tcGxldGVcIiwgbGFiZWw6IFwiSW5jb21wbGV0ZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJDb21wbGV0ZVwiLCBsYWJlbDogXCJDb21wbGV0ZVwiIH1cbiAgXTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyID0gdmFsdWU7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXTogbmV3RmlsdGVyXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJTdGF0dXNcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuU3RhdHVzRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTdGF0dXNGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDaGVja2JveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFRpY2tldFR5cGVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQ6IHsgdGlja2V0X3R5cGVzIH0sXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfVElDS0VUX1RZUEU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IGZpbHRlclZhbHVlcz8uaW5jbHVkZXModmFsdWUpXG4gICAgICA/IGZpbHRlclZhbHVlcy5maWx0ZXIoKGYpID0+IGYgIT09IHZhbHVlKVxuICAgICAgOiBbLi4uZmlsdGVyVmFsdWVzLCB2YWx1ZV07XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdOiBuZXdGaWx0ZXJzXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlRpY2tldCBUeXBlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0aWNrZXRfdHlwZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPEJveCBzeD17eyBweTogMSB9fSBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2JmLm5hbWV9fWB9PlxuICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBoYW5kbGVGaWx0ZXJDaGFuZ2UoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtmaWx0ZXJWYWx1ZXMuaW5jbHVkZXMoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2RjNcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5UaWNrZXRUeXBlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRUeXBlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCIuL0ZpbHRlclwiO1xuaW1wb3J0IFNvcnQgZnJvbSBcIi4vU29ydFwiO1xuaW1wb3J0IFNlYXJjaCBmcm9tIFwiLi9TZWFyY2hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgRmlsdGVycyA9ICh7IG9uRmlsdGVyLCBvblNvcnQsIG9uU2VhcmNoLCBvblJlc2V0IH0pID0+IChcbiAgPEdyaWQgY29udGFpbmVyIGp1c3RpZnk9XCJmbGV4LWVuZFwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICA8R3JpZFxuICAgICAgaXRlbVxuICAgICAgeHM9ezZ9XG4gICAgICBjb250YWluZXJcbiAgICAgIHBhZGRpbmc9ezF9XG4gICAgICBnYXA9ezJ9XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJTb3J0Q29udGFpbmVyfVxuICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgPlxuICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgPEZpbHRlciBvbkZpbHRlcj17b25GaWx0ZXJ9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBpdGVtPlxuICAgICAgICA8U29ydCBvblNvcnQ9e29uU29ydH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICAgPEdyaWQgaXRlbSB4cz17Nn0gY29udGFpbmVyIGp1c3RpZnlDb250ZW50PVwiZmxleC1lbmRcIj5cbiAgICAgIDxTZWFyY2ggb25TZWFyY2g9e29uU2VhcmNofSAvPlxuICAgIDwvR3JpZD5cbiAgPC9HcmlkPlxuKTtcblxuRmlsdGVycy5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Tb3J0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVycztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBGb3JtRm9vdGVyID0gKHsgc2F2ZUxhYmVsLCBjYW5jZWxMYWJlbCwgb25DbG9zZSwgZGlzYWJsZWQgfSkgPT4gKFxuICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZvb3Rlcn0+XG4gICAgPEJ1dHRvblxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnRufVxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICA+XG4gICAgICB7Y2FuY2VsTGFiZWx9XG4gICAgPC9CdXR0b24+XG4gICAgPEJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5zYXZlQnRufVxuICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICA+XG4gICAgICB7c2F2ZUxhYmVsfVxuICAgIDwvQnV0dG9uPlxuICA8L0JveD5cbik7XG5cbkZvcm1Gb290ZXIucHJvcFR5cGVzID0ge1xuICBzYXZlTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNhbmNlbExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGb3JtRm9vdGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IEVycm9ySWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBFcnJvckxhYmVsKHsgbWVzc2FnZSwgY29sb3IsIGNsYXNzTmFtZXMsIGRhdGFUZXN0SWQgfSkge1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5lcnJvckxhYmVsfSAke2NsYXNzTmFtZXMgJiYgY2xhc3NOYW1lc31gfVxuICAgICAgc3R5bGU9e3sgY29sb3IgfX1cbiAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkfVxuICAgID5cbiAgICAgIDxFcnJvckljb24gc3g9e3sgY29sb3IgfX0gLz5cbiAgICAgIHttZXNzYWdlfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRXJyb3JMYWJlbDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJhY2tkcm9wLCBDaXJjdWxhclByb2dyZXNzIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuY29uc3QgTG9hZGVyID0gKHsgb3BlbiB9KSA9PiAoXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gIDxCYWNrZHJvcCBvcGVuPXtvcGVufSBzeD17KHRoZW1lKSA9PiAoeyB6SW5kZXg6IHRoZW1lLnpJbmRleC5kcmF3ZXIgKyAxIH0pfT5cbiAgICA8Q2lyY3VsYXJQcm9ncmVzcyBjb2xvcj1cImluaGVyaXRcIiAvPlxuICA8L0JhY2tkcm9wPlxuKTtcblxuTG9hZGVyLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IExvYWRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IE9yZGVyc0xpc3QgZnJvbSBcIi4uL09yZGVyc0xpc3RcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgTXlPcmRlcnNUaWNrZXRzID0gKHsgZmV0Y2hEYXRhIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IHN1bW1pdCwgbWVtYmVyT3JkZXJzLCBvcmRlcnNfY3VycmVudF9wYWdlLCBvcmRlcnNfbGFzdF9wYWdlIH0gPVxuICAgIHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGlkPVwiaW5maW5pdGVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMubXlPcmRlcnNXcmFwcGVyfT5cbiAgICAgIHtcIiBcIn1cbiAgICAgIHttZW1iZXJPcmRlcnM/Lmxlbmd0aCA/IChcbiAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgZGF0YUxlbmd0aD17bWVtYmVyT3JkZXJzPy5sZW5ndGh9XG4gICAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKG9yZGVyc19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgICBoYXNNb3JlPXtvcmRlcnNfY3VycmVudF9wYWdlIDwgb3JkZXJzX2xhc3RfcGFnZX1cbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVtYmVyT3JkZXJzPy5tYXAoKG9yZGVyKSA9PiAoXG4gICAgICAgICAgICA8T3JkZXJzTGlzdFxuICAgICAgICAgICAgICBrZXk9e29yZGVyLm51bWJlciArIG9yZGVyLmlkfVxuICAgICAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9PcmRlcnNGb3VuZH0+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ljb25XcmFwcGVyfT5cbiAgICAgICAgICAgIDxTZWFyY2hJY29uIHN4PXt7IGZvbnRTaXplOiA0NCwgY29sb3I6IFwiIzAwMDAwMDhGXCIgfX0gLz5cbiAgICAgICAgICAgIDxDbG9zZUljb25cbiAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogMTgsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgY29sb3I6IFwiIzAwMDAwMDhGXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAge3QoXCJvcmRlcnMubm9fb3JkZXJzXCIpfVxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc1RpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IERpdmlkZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlT3JkZXJUb3RhbHMsIGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeVRhYmxlID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBkaXNjb3VudFRvdGFsLCByZWZ1bmRUb3RhbCwgdGF4ZXNUb3RhbCwgYW1vdW50VG90YWwsIHRpY2tldFN1bW1hcnkgfSA9XG4gICAgY2FsY3VsYXRlT3JkZXJUb3RhbHMoeyBvcmRlciwgc3VtbWl0IH0pO1xuICBjb25zdCBodW5kcmVkID0gMTAwO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlUYWJsZX0+XG4gICAgICB7dGlja2V0U3VtbWFyeT8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3RpY2tldFN1bW1hcnkubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpY2tldFRvdGFsID1cbiAgICAgICAgICAgICAgKHRpY2tldC5xdHkgKiAodGlja2V0LnRpY2tldF90eXBlLmNvc3QgKiBodW5kcmVkKSkgLyBodW5kcmVkO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGtleT17YHRpeG9yZGVyXyR7dGlja2V0LnRpY2tldF90eXBlLmNyZWF0ZWR9YH1cbiAgICAgICAgICAgICAgICBzeD17eyBwYjogMSB9fVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1pdGVtaXplZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRheGVzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7dGF4ZXNUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5hbW91bnRfcGFpZFwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXthbW91bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7cmVmdW5kVG90YWwgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHtyZWZ1bmRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiA/IFwiJDAuMDBcIiA6IGFtb3VudFRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5PcmRlclN1bW1hcnlUYWJsZS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGN1cnJlbmN5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2NvdW50X2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0YXhlc19hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeVRhYmxlO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgdGlja2V0c1JlZnVuZGFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVmdW5kRW1haWxTdXBwb3J0ID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZENsaWNrLFxuICBvblJlZnVuZERldGFpbENsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IGlzSW5SZWZ1bmRhYmxlUGVyaW9kID1cbiAgICBzdW1taXQucmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlID4gbm93O1xuICBjb25zdCBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCA9IHRpY2tldHNSZWZ1bmRhYmxlKHRpY2tldHMpO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSAhIShpc0luUmVmdW5kYWJsZVBlcmlvZCAmJiBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCk7XG4gIGNvbnN0IGhhc1JlZnVuZFJlcXVlc3RzID0gdGlja2V0cz8uc29tZSgodCkgPT4gdC5yZWZ1bmRfcmVxdWVzdHMubGVuZ3RoID4gMCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc1JlZnVuZGFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCByZXF1ZXN0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICAgICR7c3VibWl0UmVxdWVzdCA/IHN0eWxlcy5yZWZ1bmREaXNhYmxlZCA6IFwiXCJ9YH1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBkaXNhYmxlZD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAge2hhc1JlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgZGV0YWlscyBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwiZW1haWwgc3VwcG9ydCBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICB0YXJnZXQ9XCJfdG9wXCJcbiAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgIGhyZWY9e2BtYWlsdG86JHtzdW1taXQuc3VwcG9ydF9lbWFpbH1gfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX2luZm8uZW1haWxfc3VwcG9ydFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvPlxuICApO1xufTtcblxuUmVmdW5kRW1haWxTdXBwb3J0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIHN1Ym1pdFJlcXVlc3Q6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRFbWFpbFN1cHBvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeVRhYmxlIGZyb20gXCIuL09yZGVyU3VtbWFyeVRhYmxlXCI7XG5pbXBvcnQgUmVmdW5kRW1haWxTdXBwb3J0IGZyb20gXCIuL1JlZnVuZEVtYWlsU3VwcG9ydFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlclN1bW1hcnkgPSAoe1xuICBvcmRlcixcbiAgc3VtbWl0LFxuICBvblJlZnVuZENsaWNrLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZERldGFpbENsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlXcmFwcGVyfVxuICAgICAgICBzeD17eyBwdDogNCwgcHg6IDQgfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxoMz57dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfc3VtbWFyeVwiKX08L2gzPlxuICAgICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIHhzPXsxMn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm99XG4gICAgICAgICAgICBzeD17eyBwYjogMyB9fVxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxPcmRlclN1bW1hcnlUYWJsZSBvcmRlcj17b3JkZXJ9IHN1bW1pdD17c3VtbWl0fSAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IHhzPXsxMn0gc3g9e3sgcGI6IDMgfX0+XG4gICAgICAgIDxSZWZ1bmRFbWFpbFN1cHBvcnRcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xufTtcbk9yZGVyU3VtbWFyeS5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVtYmVyVGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KSxcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIHN1Ym1pdFJlcXVlc3Q6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnk7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnblRvTWUgPSAoeyBmZXRjaERhdGEgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgdXNlclRpY2tldHMsXG4gICAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSxcbiAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldENvbnRhaW5lcn0+XG4gICAgICA8ZGl2IGlkPVwiYXNzaWduZWRUb01lV3JhcHBlclwiIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkVG9NZVdyYXBwZXJ9PlxuICAgICAgICB7dXNlclRpY2tldHM/Lmxlbmd0aCA/IChcbiAgICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICAgIGRhdGFMZW5ndGg9e3VzZXJUaWNrZXRzPy5sZW5ndGh9XG4gICAgICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEodXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICAgICAgaGFzTW9yZT17dXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSA8IHVzZXJfdGlja2V0c19sYXN0X3BhZ2V9XG4gICAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfT5cbiAgICAgICAgICAgICAge3VzZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICAgIGlzUmVmdW5kTW9kYWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXtbXX1cbiAgICAgICAgICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldFxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm5vVGlja2V0c0ZvdW5kfT5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9PcmRlcnNJY29uV3JhcHBlcn0+XG4gICAgICAgICAgICAgIDxTZWFyY2hJY29uIHN4PXt7IGZvbnRTaXplOiA0NCwgY29sb3I6IFwiIzAwMDAwMDhGXCIgfX0gLz5cbiAgICAgICAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBmb250U2l6ZTogMTgsXG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOEZcIlxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIHt0KFwidGlja2V0cy5ub190aWNrZXRzXCIpfVxuICAgICAgICAgIDwvQm94PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25Ub01lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBHcmlkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduZWRUbyA9ICh7IGVtYWlsIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF90b1wiKX06PC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy1hc3NpZ25lZFwiPlxuICAgICAgICB7ZW1haWx9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBFeHRlcm5hbEFzc2lnbmVkVG8gPSAoeyBmaXJzdE5hbWUsIGxhc3ROYW1lIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF9ieVwiKX06PC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIj5cbiAgICAgICAge2ZpcnN0TmFtZX0ge2xhc3ROYW1lfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgTWFuYWdlRm9yID0gKHsgZmlyc3ROYW1lLCBsYXN0TmFtZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMubWFuYWdlX2ZvclwiKX06PC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIj5cbiAgICAgICAge2ZpcnN0TmFtZX0ge2xhc3ROYW1lfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgQXR0ZW5kZWVTdGF0dXMgPSAoeyB0aWNrZXQsIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gIXRpY2tldC5vd25lcj8uZW1haWwgJiYgdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgaXNEZWxlZ2F0ZWQgPSAhIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZDtcblxuICBpZiAoaXNVbmFzc2lnbmVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE93bmVyRW1haWx9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLXVuYXNzaWduZWRcIlxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXR0ZW5kZWVfc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICA8L3NwYW4+XG4gICAgKTtcbiAgfVxuXG4gIGlmICh0aWNrZXQub3duZXI/LmVtYWlsKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8QXNzaWduZWRUbyBlbWFpbD17dGlja2V0Lm93bmVyLmVtYWlsfSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIHtpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgJiYgKFxuICAgICAgICAgIDxHcmlkIGl0ZW0gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRCeVRleHR9PlxuICAgICAgICAgICAgPEV4dGVybmFsQXNzaWduZWRUb1xuICAgICAgICAgICAgICBmaXJzdE5hbWU9e3RpY2tldC5vcmRlcj8ub3duZXJfZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgbGFzdE5hbWU9e3RpY2tldC5vcmRlcj8ub3duZXJfbGFzdF9uYW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICAgIHtpc0RlbGVnYXRlZCAmJiAoXG4gICAgICAgICAgPEdyaWQgaXRlbSBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZEJ5VGV4dH0+XG4gICAgICAgICAgICA8TWFuYWdlRm9yXG4gICAgICAgICAgICAgIGZpcnN0TmFtZT17dGlja2V0Lm93bmVyPy5maXJzdF9uYW1lfVxuICAgICAgICAgICAgICBsYXN0TmFtZT17dGlja2V0Lm93bmVyPy5sYXN0X25hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgIDwvR3JpZD5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5BdHRlbmRlZVN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgaXNfYWN0aXZlOiBQcm9wVHlwZXMuYm9vbFxuICB9KSxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXR0ZW5kZWVTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgeyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyTGlzdEl0ZW0gPSAoe1xuICBzdW1taXQsXG4gIG9yZGVyLFxuICBvblBhZ2luYXRlQ2xpY2ssXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaXRlbXNUb0Rpc3BsYXksIHNldEl0ZW1zVG9EaXNwbGF5XSA9IHVzZVN0YXRlKFxuICAgIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVFxuICApO1xuXG4gIGlmICghb3JkZXI/Lm1lbWJlclRpY2tldHM/Lmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHNsaWNlZFRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cz8uc2xpY2UoMCwgaXRlbXNUb0Rpc3BsYXkpO1xuXG4gIGNvbnN0IG9uVmlld01vcmUgPSAoKSA9PiB7XG4gICAgaWYgKG9yZGVyPy50aWNrZXRzX3RvdGFsID4gb3JkZXI/Lm1lbWJlclRpY2tldHMubGVuZ3RoKSB7XG4gICAgICBvblBhZ2luYXRlQ2xpY2soKTtcbiAgICB9XG4gICAgc2V0SXRlbXNUb0Rpc3BsYXkoaXRlbXNUb0Rpc3BsYXkgKyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9O1xuXG4gIGNvbnN0IG9uVmlld0xlc3MgPSAoKSA9PiBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIGlzUmVmdW5kTW9kYWw9e2ZhbHNlfVxuICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17ISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKX1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICAgIHtvcmRlcj8udGlja2V0c190b3RhbCA+IGl0ZW1zVG9EaXNwbGF5ID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbW9yZSBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld01vcmV9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy10aWNrZXRzLnZpZXdfbW9yZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgICAge3NsaWNlZFRpY2tldHM/Lmxlbmd0aCA+IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCAmJlxuICAgICAgc2xpY2VkVGlja2V0cz8ubGVuZ3RoID09PSBvcmRlcj8udGlja2V0c190b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IGxlc3MgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdMZXNzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X2xlc3NcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdEl0ZW0ucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RJdGVtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCdXR0b24sIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBDaGVja2JveCBmcm9tIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBUaWNrZXRTdGF0dXMgZnJvbSBcIi4uL1RpY2tldFN0YXR1c1wiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N1bW1pdFV0aWxzXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IFRpY2tldERldGFpbCBmcm9tIFwiLi4vVGlja2V0RGV0YWlsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCBUaWNrZXRBc3NpZ24gZnJvbSBcIi4uL1RpY2tldEFzc2lnblwiO1xuaW1wb3J0IHsgcmVzZXRUaWNrZXQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBtb2RhbFZpZXdzID0ge1xuICBkZXRhaWw6IFwiREVUQUlMXCIsXG4gIHJlYXNzaWduOiBcIlJFQVNTSUdOXCIsXG4gIGFzc2lnbjogXCJBU1NJR05cIlxufTtcblxuY29uc3QgVGlja2V0Q1RBcyA9ICh7XG4gIGlzSW5jb21wbGV0ZSxcbiAgaXNVbmFzc2lnbmVkLFxuICBpc1JlYXNzaWduYWJsZSxcbiAgb25PcGVuQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25UaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuYXNzaWduKX1cbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbl90aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3RhY2tcbiAgICAgIHN4PXt7XG4gICAgICAgIGp1c3RpZnlDb250ZW50OiBcImVuZFwiLFxuICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgIH19XG4gICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3RmluaXNoVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmRldGFpbCl9XG4gICAgICA+XG4gICAgICAgIHtpc0luY29tcGxldGVcbiAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmZpbmlzaF90aWNrZXRcIilcbiAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICB7aXNSZWFzc2lnbmFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlYXNzaWduIHRpY2tldCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlYXNzaWduQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MucmVhc3NpZ24pfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnJlYXNzaWduX3RpY2tldFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvU3RhY2s+XG4gICk7XG59O1xuXG5UaWNrZXRDVEFzLnByb3BUeXBlcyA9IHtcbiAgaXNJbmNvbXBsZXRlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1VuYXNzaWduZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGlzUmVhc3NpZ25hYmxlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBvbk9wZW5DbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuY29uc3QgT3JkZXJMaXN0VGlja2V0cyA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICBpc1JlZnVuZE1vZGFsLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCB7IGlzUmVmdW5kYWJsZSwgaXNVbmFzc2lnbmVkLCBpc0luY29tcGxldGUsIGNhblJlYXNzaWduIH0gPVxuICAgIHVzZVRpY2tldERldGFpbHModGlja2V0KTtcbiAgY29uc3QgW21vZGFsT3Blbiwgc2V0TW9kYWxPcGVuXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3Qgb25SZWFzc2lnbmFibGVQZXJpb2QgPSByZWFzc2lnbkRhdGUgPiBub3c7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID1cbiAgICBvblJlYXNzaWduYWJsZVBlcmlvZCAmJiBjYW5SZWFzc2lnbiAmJiAhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0O1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9ICh2aWV3KSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKHZpZXcpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlcldyYXBwZXJ9ICR7XG4gICAgICAgIGlzUmVmdW5kTW9kYWwgPyBzdHlsZXMucmVmdW5kTW9kYWwgOiBcIlwiXG4gICAgICB9ICR7aXNSZWZ1bmRNb2RhbCAmJiAhaXNSZWZ1bmRhYmxlID8gc3R5bGVzLmRpc2FibGVkUmVmdW5kIDogXCJcIn0gJHtcbiAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kID8gc3R5bGVzLnNlbGVjdGVkIDogXCJcIlxuICAgICAgfWB9XG4gICAgPlxuICAgICAge2lzUmVmdW5kTW9kYWwgJiYgKFxuICAgICAgICA8R3JpZCBpdGVtIHhzPXsxfSBwYWRkaW5nPXsyfSBjbGFzc05hbWU9e3N0eWxlcy5jaGVja2JveH0+XG4gICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHRpY2tldCBjaGVja2JveFwiXG4gICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgY2hlY2tlZD17aXNTZWxlY3RlZFRvUmVmdW5kfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZWxlY3RUb1JlZnVuZChlLCB0aWNrZXQpfVxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjoge1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc1JlZnVuZGFibGV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkXG4gICAgICAgIGl0ZW1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItbGlzdC10aWNrZXRcIlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgeHM9e2lzUmVmdW5kTW9kYWwgPyAxMSA6IDEyfVxuICAgICAgPlxuICAgICAgICA8R3JpZFxuICAgICAgICAgIHhzPXs4fVxuICAgICAgICAgIHB5PXsyfVxuICAgICAgICAgIHBsPXs0fVxuICAgICAgICAgIGl0ZW1cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfVxuICAgICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IHB5PXsyfSBwcj17NH0gaXRlbT5cbiAgICAgICAgICB7LyogVG8gYWRkIGJhZGdlIGZlYXR1cmVzICovfVxuICAgICAgICAgIHt0aWNrZXQuYmFkZ2U/LmZlYXR1cmVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlfVxuICAgICAgICAgICAgICBzcmM9e2JmLmltYWdlfVxuICAgICAgICAgICAgICBhbHQ9e2JmLm5hbWV9XG4gICAgICAgICAgICAgIGtleT17YmYubmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezEyfSBzeD17eyBweDogNCwgcGI6IDIgfX0gaXRlbT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXNcbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0PXshIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgICB0ZXh0PXt0aWNrZXQubnVtYmVyfVxuICAgICAgICAgICAgICB0b29sdGlwVGV4dD17dChcInRpY2tldF9zdGF0dXMuY29weV90aWNrZXRfbnVtYmVyXCIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEJveCBzeD17eyBkaXNwbGF5OiBcImZsZXhcIiwgZmxleFdyYXA6IFwid3JhcFwiLCB3aWR0aDogXCIxMDAlXCIgfX0+XG4gICAgICAgICAgPEJveCBzeD17eyBtaW5XaWR0aDogXCIzMDBweFwiIH19PlxuICAgICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldEFjdGlvbkJ1dHRvbnN9PlxuICAgICAgICAgICAge3RpY2tldC5pc19hY3RpdmUgJiYgIWlzUmVmdW5kTW9kYWwgJiYgKFxuICAgICAgICAgICAgICA8VGlja2V0Q1RBc1xuICAgICAgICAgICAgICAgIGlzVW5hc3NpZ25lZD17aXNVbmFzc2lnbmVkfVxuICAgICAgICAgICAgICAgIGlzSW5jb21wbGV0ZT17aXNJbmNvbXBsZXRlfVxuICAgICAgICAgICAgICAgIGlzUmVhc3NpZ25hYmxlPXtpc1JlYXNzaWduYWJsZSAmJiAhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0fVxuICAgICAgICAgICAgICAgIG9uT3BlbkNsaWNrPXtoYW5kbGVPcGVuTW9kYWx9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvQm94PlxuICAgICAgICA8L0JveD5cbiAgICAgICAgPFRpY2tldERldGFpbFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWQgfHwgdGlja2V0Py5vcmRlcj8uaWR9XG4gICAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgICAgb3Blbj17bW9kYWxPcGVuID09PSBtb2RhbFZpZXdzLmRldGFpbH1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAvPlxuICAgICAgICA8VGlja2V0QXNzaWduXG4gICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgb3JkZXJJZD17dGlja2V0Py5vcmRlcl9pZCB8fCB0aWNrZXQ/Lm9yZGVyPy5pZH1cbiAgICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgICBvcGVuPXtbbW9kYWxWaWV3cy5yZWFzc2lnbiwgbW9kYWxWaWV3cy5hc3NpZ25dLmluY2x1ZGVzKG1vZGFsT3Blbil9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5PcmRlckxpc3RUaWNrZXRzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG9yZGVyX2lkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0b3RhbF9yZWZ1bmRlZF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGlja2V0X3R5cGU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgaXNfYWN0aXZlOiBQcm9wVHlwZXMuYm9vbFxuICB9KSxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBpc1JlZnVuZE1vZGFsOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2VsZWN0VG9SZWZ1bmQ6IFByb3BUeXBlcy5mdW5jLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFRhYnMgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiO1xuaW1wb3J0IFRhYiBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJcIjtcbmltcG9ydCBPcmRlckxpc3RJdGVtIGZyb20gXCIuL09yZGVyTGlzdEl0ZW1cIjtcbmltcG9ydCBPcmRlclN1bW1hcnkgZnJvbSBcIi4uL09yZGVyU3VtbWFyeVwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RzTW9kYWwgZnJvbSBcIi4uL1JlZnVuZFJlcXVlc3RzXCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBSZWZ1bmREZXRhaWxzIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzXCI7XG5cbmNvbnN0IFRhYlBhbmVsID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIHZhbHVlLCBpbmRleCB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgIGhpZGRlbj17dmFsdWUgIT09IGluZGV4fVxuICAgICAgaWQ9e2B0YWJwYW5lbC0ke2luZGV4fWB9XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9e2B0YWItJHtpbmRleH1gfVxuICAgID5cbiAgICAgIHt2YWx1ZSA9PT0gaW5kZXggJiYgY2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSA9ICh7XG4gIGlzTW9iaWxlLFxuICBzdW1taXQsXG4gIG9yZGVyLFxuICBkZXRhaWxzUmVxdWlyZWQsXG4gIG9uUGFnaW5hdGVDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChfLCBuZXdWYWx1ZSkgPT4ge1xuICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfTtcbiAgY29uc3QgW3RpY2tldHNUb1JlZnVuZCwgc2V0VGlja2V0c1RvUmVmdW5kXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW3N1Ym1pdFJlcXVlc3QsIHNldFN1Ym1pdFJlcXVlc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbcmVmdW5kRGV0YWlsc09wZW4sIHNldFJlZnVuZERldGFpbHNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBvblJlZnVuZENsaWNrID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QodHJ1ZSk7XG4gIH07XG4gIGNvbnN0IHVuc2VsZWN0UmVmdW5kVGlja2V0cyA9ICh0aWNrZXQpID0+IHtcbiAgICBjb25zdCBmaWx0ZXJTZWxlY3RlZCA9IHRpY2tldHNUb1JlZnVuZC5maWx0ZXIoKHQpID0+IHQuaWQgIT09IHRpY2tldC5pZCk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKGZpbHRlclNlbGVjdGVkKTtcbiAgfTtcbiAgY29uc3Qgc2VsZWN0VG9SZWZ1bmQgPSAoZSwgdGlja2V0KSA9PiB7XG4gICAgY29uc3QgeyBjaGVja2VkIH0gPSBlLnRhcmdldDtcbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRUaWNrZXQgPSBvcmRlcj8ubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAgICAgKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZFxuICAgICAgKTtcbiAgICAgIHNldFRpY2tldHNUb1JlZnVuZChbLi4udGlja2V0c1RvUmVmdW5kLCBzZWxlY3RlZFRpY2tldF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHModGlja2V0KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2xvc2VTdWJtaXRSZXF1ZXN0ID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IG1vcmVEZXRhaWxzID0gKCkgPT5cbiAgICBkZXRhaWxzUmVxdWlyZWQgJiYgKFxuICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgbWVzc2FnZT17dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2RldGFpbHNfcmVxdWlyZWRcIil9XG4gICAgICAgIGNvbG9yPVwiI2ZmOTgwMFwiXG4gICAgICAgIGRhdGFUZXN0SWQ9XCJtb3JlLWRldGFpbHMtbGFiZWxcIlxuICAgICAgLz5cbiAgICApO1xuXG4gIHJldHVybiBpc01vYmlsZSA/IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJtb2JpbGUtb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8Qm94IHN4PXt7IGJvcmRlckNvbG9yOiBcImRpdmlkZXJcIiwgcGI6IDIgfX0+XG4gICAgICAgIDxUYWJzXG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlRpY2tldHMgJiBTdW1tYXJ5XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMudGlja2V0c1wiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnN1bW1hcnlcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgIDwvVGFicz5cbiAgICAgIDwvQm94PlxuICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MH0+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXsxfT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgIDwvQm94PlxuICApIDogKFxuICAgIDw+XG4gICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWRcbiAgICAgICAgcGFkZGluZz17MX1cbiAgICAgICAgaXRlbVxuICAgICAgICBtZD17N31cbiAgICAgICAgb3JkZXI9e3sgbWQ6IDEgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJkZXNrdG9wLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgcGFkZGluZz17MX0gaXRlbSBtZD17NX0gb3JkZXI9e3sgbWQ6IDEgfX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKHRydWUpfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFJlZnVuZFJlcXVlc3RzTW9kYWxcbiAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHMgfHwgW119XG4gICAgICAgIG9wZW49e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlPXsoKSA9PiByZXNldEFsbFJlZnVuZFN0YXR1c2VzKCl9XG4gICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IGNsb3NlU3VibWl0UmVxdWVzdCgpfVxuICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgIC8+XG4gICAgICA8UmVmdW5kRGV0YWlsc1xuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgY3VycmVuY3k9e29yZGVyLmN1cnJlbmN5fVxuICAgICAgICBvcGVuPXtyZWZ1bmREZXRhaWxzT3Blbn1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4oZmFsc2UpfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZW1iZXJUaWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pLFxuICBpc01vYmlsZTogUHJvcFR5cGVzLmJvb2wsXG4gIGRldGFpbHNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uUGFnaW5hdGVDbGljazogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB1c2VNZWRpYVF1ZXJ5IGZyb20gXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIjtcbmltcG9ydCB7IGdldFRpY2tldHNCeU9yZGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgZnJvbSBcIi4vT3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJzTGlzdCA9ICh7IHN1bW1pdCwgb3JkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyB0aWNrZXRfcGVyX3BhZ2UsIGZpbHRlciwgc29ydCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcbiAgY29uc3QgW2lzTW9iaWxlVmlld2FibGUsIHNldE1vYmlsZVZpZXdhYmxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZGV0YWlsc1JlcXVpcmVkID0gb3JkZXIubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAodGlja2V0KSA9PiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCJcbiAgKTtcblxuICBjb25zdCBvblBhZ2luYXRlQ2xpY2sgPSAoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgcGFnZTogb3JkZXIudGlja2V0c19wYWdlX2N1cnJlbnQgKyBPTkVfUEFHRV9ORVhULFxuICAgICAgICBwZXJQYWdlOiB0aWNrZXRfcGVyX3BhZ2UsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgc29ydFxuICAgICAgfSlcbiAgICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiAxLFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm99XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci10aWNrZXQtaW5mby1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMucHVyY2hhc2VkXCIpfToge2dldEZvcm1hdHRlZERhdGUob3JkZXIuY3JlYXRlZCl9IHx7XCIgXCJ9XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICB0ZXh0PXtvcmRlci5udW1iZXJ9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7aXNNb2JpbGUgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHN4PXt7IHBhZGRpbmc6IFwiNXB4IDEwcHhcIiB9fVxuICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0TW9iaWxlVmlld2FibGUoIWlzTW9iaWxlVmlld2FibGUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc01vYmlsZVZpZXdhYmxlXG4gICAgICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuaGlkZV90aWNrZXRzXCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRzXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICA8R3JpZFxuICAgICAgICBrZXk9e29yZGVyLmlkfVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcm93U3BhY2luZz17MX1cbiAgICAgICAgY29sdW1uU3BhY2luZz17eyB4czogMSwgc206IDIsIG1kOiAzIH19XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfSAke1xuICAgICAgICAgIGlzTW9iaWxlICYmICFpc01vYmlsZVZpZXdhYmxlID8gc3R5bGVzLmRpc3BsYXlfbm9uZSA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZmxleERpcmVjdGlvbjoge1xuICAgICAgICAgICAgbWQ6IFwicm93XCIsXG4gICAgICAgICAgICBsZzogXCJyb3dcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogNCxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8T3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcbiAgICAgICAgICBpc01vYmlsZT17aXNNb2JpbGV9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIGRldGFpbHNSZXF1aXJlZD17ISFkZXRhaWxzUmVxdWlyZWR9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlcnNMaXN0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcbmltcG9ydCB7IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuY29uc3QgUmVmdW5kRGV0YWlscyA9ICh7IHRpY2tldHMsIGN1cnJlbmN5LCBvcGVuLCBvbkNsb3NlU2xpZGVyIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCByZXF1ZXN0ZWRUaWNrZXRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzKHRpY2tldHMpLFxuICAgIFt0aWNrZXRzXVxuICApO1xuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFJpZ2h0RHJhd2VyXG4gICAgICBpZD1cInJlZnVuZC1kZXRhaWxzXCJcbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtjbG9zZVNsaWRlcn1cbiAgICAgIHRpdGxlPXt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICA+XG4gICAgICA8Qm94XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgZmxleERpcmVjdGlvbjogXCJjb2x1bW5cIixcbiAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICAgIHBhZGRpbmc6IFwiMCA1cmVtXCJcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3JlcXVlc3RlZFRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXtgcmVmdW5kX3JlcV8ke3RpY2tldD8uaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgY3VycmVuY3k9e2N1cnJlbmN5fVxuICAgICAgICAgICAgcmVmdW5kRGV0YWlsc1xuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblJlZnVuZERldGFpbHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZERldGFpbHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBJY29uQnV0dG9uLCBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHRvb2x0aXBDbGFzc2VzIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgSW5mb0ljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IFJlZnVuZFN0YXR1cyBmcm9tIFwiLi9SZWZ1bmRTdGF0dXNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgPSAoeyB0aWNrZXQsIGN1cnJlbmN5LCByZWZ1bmREZXRhaWxzIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IEdSSURfOCA9IDg7XG4gIGNvbnN0IEdSSURfMTIgPSAxMjtcblxuICBjb25zdCBQQURESU5HXzIgPSAyO1xuXG4gIGNvbnN0IGFwcHJvdmVkUmVmdW5kcyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHMuZmlsdGVyKFxuICAgIChyZWZ1bmQpID0+IHJlZnVuZC5zdGF0dXMgPT09IFwiQXBwcm92ZWRcIlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkgPSB7fTtcblxuICBhcHByb3ZlZFJlZnVuZHMuZm9yRWFjaCgocmVmdW5kKSA9PiB7XG4gICAgcmVmdW5kLnJlZnVuZGVkX3RheGVzLmZvckVhY2goKHJ0KSA9PiB7XG4gICAgICBjb25zdCB0YXhJZCA9IHJ0LnRheC5pZDtcbiAgICAgIGlmICghcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0pIHtcbiAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0gPSB7XG4gICAgICAgICAgbmFtZTogcnQudGF4Lm5hbWUsXG4gICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudDogMFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0udG90YWxSZWZ1bmRlZFRheEFtb3VudCArPVxuICAgICAgICBydC5yZWZ1bmRlZF9hbW91bnQ7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IEh0bWxUb29sdGlwID0gc3R5bGVkKCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSkgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIDxUb29sdGlwIHsuLi5wcm9wc30gY2xhc3Nlcz17eyBwb3BwZXI6IGNsYXNzTmFtZSB9fSAvPlxuICApKSgoKSA9PiAoe1xuICAgIFtgJiAuJHt0b29sdGlwQ2xhc3Nlcy50b29sdGlwfWBdOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI2Y1ZjVmOVwiLFxuICAgICAgY29sb3I6IFwicmdiYSgwLCAwLCAwLCAwLjg3KVwiLFxuICAgICAgbWF4V2lkdGg6IDIyMCxcbiAgICAgIGZvbnRTaXplOiBcIjFlbVwiLFxuICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCAjZGFkZGU5XCJcbiAgICB9XG4gIH0pKTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnJlZnVuZFRpY2tldEJveENvbnRhaW5lcn0gJHtcbiAgICAgICAgcmVmdW5kRGV0YWlscyA/IHN0eWxlcy5yZWZ1bmREZXRhaWwgOiBcIlwiXG4gICAgICB9IGB9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0ZWQtdGlja2V0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEdyaWRcbiAgICAgICAgeHM9e3JlZnVuZERldGFpbHMgPyBHUklEXzggOiBHUklEXzEyfVxuICAgICAgICBpdGVtXG4gICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgcHQ9ezJ9XG4gICAgICAgIHB4PXs0fVxuICAgICAgPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIlxuICAgICAgICAgIH19XG4gICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IGl0ZW0+XG4gICAgICAgICAgICB7dGlja2V0LmJhZGdlPy5mZWF0dXJlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmV9XG4gICAgICAgICAgICAgICAgc3JjPXtiZi5pbWFnZX1cbiAgICAgICAgICAgICAgICBhbHQ9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAga2V5PXtiZi5uYW1lfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAge3JlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCB4cz17NH0gcGFkZGluZz17Mn0gaXRlbT5cbiAgICAgICAgICA8UmVmdW5kU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWQgeHM9ezEyfSBpdGVtIHB4PXs0fSBwYj17cmVmdW5kRGV0YWlscyA/IFBBRERJTkdfMiA6IDB9IGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFRpY2tldEF0dGVuZGVlfT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06IDxDb3B5VGV4dCB0ZXh0PXt0aWNrZXQubnVtYmVyfSAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICB7cmVmdW5kRGV0YWlscyAmJiB0aWNrZXQudG90YWxfcmVmdW5kZWRfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgICAgPEdyaWQgeHM9ezR9IHBsPXs0fT5cbiAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXQudG90YWxfcmVmdW5kZWRfYW1vdW50LCB7IGN1cnJlbmN5IH0pfXtcIiBcIn1cbiAgICAgICAgICAgIFJlZnVuZGVkXG4gICAgICAgICAgICB7YXBwcm92ZWRSZWZ1bmRzLnNvbWUoKHIpID0+IHIucmVmdW5kZWRfdGF4ZXMubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICA8SHRtbFRvb2x0aXBcbiAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0LnJlZnVuZGVkX2Ftb3VudCwgeyBjdXJyZW5jeSB9KX17XCIgXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgVGlja2V0IEFtb3VudFxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxiPlRheGVzPC9iPlxuICAgICAgICAgICAgICAgICAgICB7T2JqZWN0LmtleXMocmVmdW5kZWRUYXhlc1N1bW1hdG9yeSkubWFwKCh0YXhJZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdG90YWxSZWZ1bmRlZFRheEFtb3VudCwgbmFtZSB9ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBrZXk9e3RheElkfT57YCR7bmFtZX0gLSAke2Zvcm1hdEN1cnJlbmN5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFJlZnVuZGVkVGF4QW1vdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IGN1cnJlbmN5IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICl9YH08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxJbmZvSWNvbiAvPlxuICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9IdG1sVG9vbHRpcD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIHttb21lbnQoXG4gICAgICAgICAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHNbMF0uYWN0aW9uX2RhdGUgKiBNSUxMSVNFQ19UT19TRUNcbiAgICAgICAgICAgICkuZm9ybWF0KFwiTU1NIERELCBZWVlZXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIHshcmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgIDxHcmlkIHhzPXsxMn0gcHI9ezR9IHBiPXsyfT5cbiAgICAgICAgICA8R3JpZCB4cz17MTJ9IGl0ZW0+XG4gICAgICAgICAgICA8VGlja2V0U3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZnVuZERldGFpbHM6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ2hpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZnVuZFN0YXR1cyA9ICh7IHRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgc3RhdHVzQ29sb3IgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yKHRpY2tldCksXG4gICAgW3RpY2tldF1cbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8Q2hpcFxuICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCByZWZ1bmQgc3RhdHVzIGxhYmVsXCJcbiAgICAgIGxhYmVsPXt0KGB0aWNrZXRfc3RhdHVzLnJlZnVuZF9yZXF1ZXN0XyR7c3RhdHVzQ29sb3J9YCl9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlc1tzdGF0dXNDb2xvcl19YH1cbiAgICAvPlxuICApO1xufTtcblxuUmVmdW5kU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENoZWNrQ2lyY2xlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgeyByZWZ1bmRCdWxrVGlja2V0cywgdXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBTVEVQX09ORSwgU1RFUF9USFJFRSwgU1RFUF9UV08gfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0c01vZGFsID0gKHtcbiAgdGlja2V0cyxcbiAgc3VtbWl0LFxuICBvcGVuLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSxcbiAgb25DbG9zZVNsaWRlcixcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZCxcbiAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc3RlcCwgc2V0U3RlcF0gPSB1c2VTdGF0ZShTVEVQX09ORSk7XG4gIGNvbnN0IFtlcnJvck1zZywgc2V0RXJyb3JNc2ddID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtyZWZ1bmRTdWNjZXNzLCBzZXRSZWZ1bmRTdWNjZXNzXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gICAgaWYgKHJlZnVuZFN1Y2Nlc3MpIHtcbiAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlKCk7IC8vIGlmIHRoZSByZWZ1bmQgaXMgYSBzdWNjZXNzLCB0cmlnZ2VyIGFuZCByZS1yZXRyaWV2ZSB0aWNrZXRzIGJ5IG9yZGVyXG4gICAgICBzZXRSZWZ1bmRTdWNjZXNzKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY29uZmlybVJlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRTdGVwKFNURVBfVFdPKTtcbiAgfTtcblxuICBjb25zdCBnb0JhY2tUb1JlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRTdGVwKFNURVBfT05FKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRUaWNrZXRzID0gYXN5bmMgKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlZnVuZEJ1bGtUaWNrZXRzKHsgdGlja2V0czogdGlja2V0c1RvUmVmdW5kIH0pKS50aGVuKChyZXMpID0+IHtcbiAgICAgIGRpc3BhdGNoKHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQocmVzKSk7IC8vIHJldHVybmluZyB3aGljaCB0aWNrZXRzIHdlcmUgc3VjY2Vzc2Z1bFxuICAgICAgaWYgKHJlcz8ubGVuZ3RoID09PSB0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoKSB7XG4gICAgICAgIHNldFN0ZXAoU1RFUF9USFJFRSk7IC8vIHN1Y2Nlc3MsIGFsbCByZWZ1bmRzIHdlcmUgcmVxdWVzdGVkXG4gICAgICAgIHNldFJlZnVuZFN1Y2Nlc3ModHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFcnJvck1zZyh0KFwiZXJyb3JzLnJlZnVuZF91bnN1Y2Nlc3NmdWxcIikpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBPbmUgPSAoKSA9PiAoXG4gICAgPD5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X3NlbGVjdF9yZWZ1bmRcIil9XG4gICAgICA8L2gyPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0fT5cbiAgICAgICAge3RpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgICAga2V5PXtgdGlja2V0LSR7dGlja2V0LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXtcbiAgICAgICAgICAgICAgISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgICAgICBpc1JlZnVuZE1vZGFsXG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc30+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNhbmNlbC1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jYW5jZWxcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2NvbmZpcm1SZWZ1bmR9XG4gICAgICAgICAgZGlzYWJsZWQ9e3RpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFR3byA9ICgpID0+IChcbiAgICA8Qm94IGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3Qtc3VjY2Vzc2Z1bFwiPlxuICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAge3QoXCJjb25maXJtX3BvcHVwLnF1ZXN0aW9uX3RleHRfY29uZmlybV9yZWZ1bmRcIil9XG4gICAgICA8L2gzPlxuICAgICAge2Vycm9yTXNnICYmIChcbiAgICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgICBjbGFzc05hbWVzPXtzdHlsZXMucmVmdW5kRXJyb3JNc2d9XG4gICAgICAgICAgY29sb3I9XCIjRkYwMDAwXCJcbiAgICAgICAgICBkYXRhVGVzdElkPVwiZmFpbGVkLXJlZnVuZC1tZXNzYWdlXCJcbiAgICAgICAgICBtZXNzYWdlPXtlcnJvck1zZ31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3R9PlxuICAgICAgICB7dGlja2V0c1RvUmVmdW5kLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXtgcmVmdW5kX3JlcV8ke3RpY2tldD8uaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLkNUQUJ1dHRvbldyYXBwZXJ9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1yZXR1cm4tYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Z29CYWNrVG9SZWZ1bmR9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuYmFja1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17cmVmdW5kVGlja2V0c31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVGhyZWUgPSAoKSA9PiAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kU3VjY2Vzc2Z1bH1cbiAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3Qtc3VjY2Vzc2Z1bFwiXG4gICAgPlxuICAgICAgPENoZWNrQ2lyY2xlSWNvbiBzeD17eyBjb2xvcjogXCIjNGNhZjUwXCIgfX0gLz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2d9PlxuICAgICAgICB7dChcInRpY2tldHMucmVmdW5kX3JlcXVlc3Rfc3VjY2Vzc18xXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZzJ9PlxuICAgICAgICB7dChcInRpY2tldHMucmVmdW5kX3JlcXVlc3Rfc3VjY2Vzc18yXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWZpbmlzaC1idXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgPlxuICAgICAgICB7dChcImdlbmVyYWwuZmluaXNoXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9Cb3g+XG4gICk7XG5cbiAgY29uc3QgcmVuZGVyU3RlcHMgPSAoKSA9PiB7XG4gICAgc3dpdGNoIChzdGVwKSB7XG4gICAgICBjYXNlIFNURVBfT05FOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgICAgY2FzZSBTVEVQX1RXTzpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBUd28oKTtcbiAgICAgIGNhc2UgU1RFUF9USFJFRTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBUaHJlZSgpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgPFJpZ2h0RHJhd2VyXG4gICAgICAgIGlkPVwicmVmdW5kLXJlcXVlc3RzXCJcbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17Y2xvc2VTbGlkZXJ9XG4gICAgICAgIHRpdGxlPXt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1tb2RhbFwiXG4gICAgICA+XG4gICAgICAgIHtyZW5kZXJTdGVwcygpfVxuICAgICAgPC9SaWdodERyYXdlcj5cbiAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICApO1xufTtcblxuUmVmdW5kUmVxdWVzdHNNb2RhbC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xvc2VTbGlkZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0c01vZGFsO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5LCBEcmF3ZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgQ2xvc2UgYXMgQ2xvc2VJY29uIH0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmlnaHREcmF3ZXIgPSAoeyBpZCwgdGl0bGUsIGNoaWxkcmVuLCBvcGVuLCBvbkNsb3NlLCBjbGFzc05hbWUgfSkgPT4gKFxuICA8RHJhd2VyXG4gICAgaWQ9e2lkfVxuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy53cmFwcGVyfSAke2NsYXNzTmFtZX1gfVxuICA+XG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgPEljb25CdXR0b25cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJjbG9zZS1kcmF3ZXJcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbG9zZUJ0bn1cbiAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgID5cbiAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAge3RpdGxlfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICAgIHtjaGlsZHJlbn1cbiAgPC9EcmF3ZXI+XG4pO1xuXG5SaWdodERyYXdlci5wcm9wVHlwZXMgPSB7XG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpdGxlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubm9kZV0pLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSaWdodERyYXdlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCB7IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgU3VtbWl0SGVhZGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHN1bW1pdCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy53aWRnZXRIZWFkZXJ9XG4gICAgICBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fVxuICAgICAgZGF0YS10ZXN0aWQ9XCJteS1vcmRlcnMtdGlja2V0LWhlYWRlclwiXG4gICAgPlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+e3N1bW1pdD8ubmFtZX08L2gyPlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+XG4gICAgICAgIHtnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCl9XG4gICAgICA8L2gyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3VtbWl0SGVhZGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IERlbGVnYXRlRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgZGVsZWdhdGVfZmlyc3RfbmFtZTogXCJcIixcbiAgICAgIGRlbGVnYXRlX2xhc3RfbmFtZTogXCJcIixcbiAgICAgIGRlbGVnYXRlX2VtYWlsOiBcIlwiXG4gICAgfSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiB5dXAub2JqZWN0KHtcbiAgICAgIGRlbGVnYXRlX2ZpcnN0X25hbWU6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5yZXF1aXJlZFwiKSksXG4gICAgICBkZWxlZ2F0ZV9sYXN0X25hbWU6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5sYXN0X25hbWUucmVxdWlyZWRcIikpLFxuICAgICAgZGVsZWdhdGVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICB9KSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcywgeyByZXNldEZvcm0gfSkgPT4ge1xuICAgICAgb25TdWJtaXQodmFsdWVzKTtcbiAgICAgIHJlc2V0Rm9ybSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGZvcm1pay5yZXNldEZvcm0oKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS50aXRsZVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5ib2R5XCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfZmlyc3RfbmFtZVwiXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5maXJzdF9uYW1lXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2ZpcnN0X25hbWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9maXJzdF9uYW1lICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZmlyc3RfbmFtZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9maXJzdF9uYW1lICYmXG4gICAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2ZpcnN0X25hbWVcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9sYXN0X25hbWVcIlxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0ubGFzdF9uYW1lXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2xhc3RfbmFtZX1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2xhc3RfbmFtZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2xhc3RfbmFtZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9sYXN0X25hbWUgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfbGFzdF9uYW1lXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2VtYWlsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5lbWFpbFwiKX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2VtYWlsfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZW1haWwgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9lbWFpbClcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9lbWFpbCAmJiBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2VtYWlsXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8Rm9ybUZvb3RlclxuICAgICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5zYXZlXCIpfVxuICAgICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmNhbmNlbFwiKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAgIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgPC8+XG4gICk7XG59O1xuXG5EZWxlZ2F0ZUZvcm0ucHJvcFR5cGVzID0ge1xuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGVsZWdhdGVGb3JtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBMaW5rLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vLi4vLi4vQ29weVRleHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduSGVhZGVyID0gKHsgaW5Qcm9ncmVzcywgdGlja2V0LCB1c2VyRW1haWwsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGFzc2lnbmVkVG9Zb3UgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlckVtYWlsO1xuXG4gIGNvbnN0IGdldFNlY29uZGFyeVRpdGxlID0gKCkgPT4ge1xuICAgIGlmIChpblByb2dyZXNzID09PSBcIm1hbmFnZVwiKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5kZWxlZ2F0ZWRcIil9ICR7XG4gICAgICAgIHRpY2tldC5vd25lci5maXJzdF9uYW1lXG4gICAgICB9ICR7dGlja2V0Lm93bmVyLmxhc3RfbmFtZX0uYDtcbiAgICB9XG5cbiAgICBpZiAoaW5Qcm9ncmVzcykge1xuICAgICAgY29uc3QgdXNlciA9IGFzc2lnbmVkVG9Zb3UgPyBcInlvdVwiIDogdGlja2V0Py5vd25lcj8uZW1haWw7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5hc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRpY2tldC50aWNrZXRfdHlwZS5uYW1lO1xuICB9O1xuXG4gIGNvbnN0IGdldEhlYWRlck5vdGUgPSAoKSA9PiB7XG4gICAgaWYgKGluUHJvZ3Jlc3MpIHtcbiAgICAgIGNvbnN0IHRyYW5zS2V5ID0gYXNzaWduZWRUb1lvdVxuICAgICAgICA/IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFuc3dlcl95b3VyX2VxXCJcbiAgICAgICAgOiBcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5hbnN3ZXJfb3RoZXJzX2VxXCI7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3QodHJhbnNLZXkpfVxuICAgICAgICAgIDxiciAvPlxuICAgICAgICAgIHsvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvYW5jaG9yLWlzLXZhbGlkICovfVxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBjb21wb25lbnQ9XCJidXR0b25cIlxuICAgICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgICBzeD17eyBmb250V2VpZ2h0OiA3MDAsIG1hcmdpbjogXCIyMHB4IDAgMTBweFwiIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uY29tcGxldGVfbGF0ZXJcIil9XG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5wdXJjaGFzZWRCeVdyYXBwZXJ9PlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMucHVyY2hhc2VkQnl9PlxuICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLnB1cmNoYXNlZF9ieVwiKX17XCIgXCJ9XG4gICAgICAgICAge3RpY2tldD8ub3JkZXI/Lm93bmVyX2VtYWlsfVxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5vcmRlck5vfT5cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICB3aWR0aD17MjUwfVxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg1XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7Z2V0U2Vjb25kYXJ5VGl0bGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJOb3RlfVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtnZXRIZWFkZXJOb3RlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG4vLyBBZGRpbmcgcHJvcC10eXBlcyBmb3IgdHlwZS1jaGVja2luZ1xuQXNzaWduSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgaW5Qcm9ncmVzczogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlckVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbkhlYWRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgTGluaywgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlYXNzaWduSGVhZGVyID0gKHtcbiAgaW5Qcm9ncmVzcyxcbiAgYWxsb3dzRGVsZWdhdGUsXG4gIHRpY2tldCxcbiAgdXNlckVtYWlsLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYXNzaWduZWRUb1lvdSA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyRW1haWw7XG5cbiAgY29uc3QgZ2V0U2Vjb25kYXJ5VGl0bGUgPSAoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IGFzc2lnbmVkVG9Zb3VcbiAgICAgID8gdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLnlvdXJzZWxmXCIpXG4gICAgICA6IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuXG4gICAgaWYgKGluUHJvZ3Jlc3MgPT09IFwibWFuYWdlXCIpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uZGVsZWdhdGVkXCIpfSAke1xuICAgICAgICB0aWNrZXQub3duZXIuZmlyc3RfbmFtZVxuICAgICAgfSAke3RpY2tldC5vd25lci5sYXN0X25hbWV9LmA7XG4gICAgfVxuXG4gICAgaWYgKCFpblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLnJlYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICB9O1xuXG4gIGNvbnN0IGdldEhlYWRlck5vdGUgPSAoKSA9PiB7XG4gICAgaWYgKCFpblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gYWxsb3dzRGVsZWdhdGVcbiAgICAgICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uY2hvb3NlX29wdGlvblwiKVxuICAgICAgICA6IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jaG9vc2Vfb3B0aW9uX25vX2RlbGVnYXRlXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHRyYW5zS2V5ID0gYXNzaWduZWRUb1lvdVxuICAgICAgPyBcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFuc3dlcl95b3VyX2VxXCJcbiAgICAgIDogXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hbnN3ZXJfb3RoZXJzX2VxXCI7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge3QodHJhbnNLZXkpfVxuICAgICAgICA8YnIgLz5cbiAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi99XG4gICAgICAgIDxMaW5rXG4gICAgICAgICAgY29tcG9uZW50PVwiYnV0dG9uXCJcbiAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgc3g9e3sgZm9udFdlaWdodDogNzAwLCBtYXJnaW46IFwiMjBweCAwIDEwcHhcIiB9fVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jb21wbGV0ZV9sYXRlclwiKX1cbiAgICAgICAgPC9MaW5rPlxuICAgICAgPC8+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHtnZXRTZWNvbmRhcnlUaXRsZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlck5vdGV9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2dldEhlYWRlck5vdGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbi8vIEFkZGluZyBwcm9wLXR5cGVzIGZvciB0eXBlLWNoZWNraW5nXG5SZWFzc2lnbkhlYWRlci5wcm9wVHlwZXMgPSB7XG4gIGluUHJvZ3Jlc3M6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHVzZXJFbWFpbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFzc2lnbkhlYWRlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuXG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuXG5jb25zdCBSZWFzc2lnbkZvcm0gPSAoeyBvblN1Ym1pdCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogXCJcIixcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAgIC5lbWFpbCh0KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSksXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiB5dXAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLnRleHQuc3RyaW5nXCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0OiAodmFsdWVzLCB7IHJlc2V0Rm9ybSB9KSA9PiB7XG4gICAgICBvblN1Ym1pdCh2YWx1ZXMpO1xuICAgICAgcmVzZXRGb3JtKCk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgZm9ybWlrLnJlc2V0Rm9ybSgpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnRpdGxlXCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLmJvZHlcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJuZXdfYXR0ZW5kZWVfZW1haWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLm5ld19hdHRlbmRlZV9lbWFpbFwiKX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLm5ld19hdHRlbmRlZV9lbWFpbH1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbClcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsXG4gICAgICAgICAgfVxuICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwicGVyc29uYWxfbWVzc2FnZVwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0ucGVyc29uYWxfbWVzc2FnZVwiKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5wZXJzb25hbF9tZXNzYWdlfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgbXVsdGlsaW5lXG4gICAgICAgICAgbWluUm93cz17NH1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiYgZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8Rm9ybUZvb3RlclxuICAgICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5zYXZlXCIpfVxuICAgICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLmNhbmNlbFwiKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAgIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgPC8+XG4gICk7XG59O1xuXG5SZWFzc2lnbkZvcm0ucHJvcFR5cGVzID0ge1xuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhc3NpZ25Gb3JtO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBDb2xsYXBzZSwgRGl2aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBhc3NpZ25BdHRlbmRlZSxcbiAgZGVsZWdhdGVUaWNrZXQsXG4gIHJlYXNzaWduVGlja2V0LFxuICBzYXZlRXh0cmFRdWVzdGlvbnNcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBSZWFzc2lnbkZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9SZWFzc2lnbkZvcm1cIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBBc3NpZ25FUUZvcm0gZnJvbSBcIi4uL0Fzc2lnbkVRRm9ybVwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuaW1wb3J0IHVzZUdldFRpY2tldCBmcm9tIFwiLi4vLi4vaG9va3MvdXNlR2V0VGlja2V0XCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgRGVsZWdhdGVGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvRGVsZWdhdGVGb3JtXCI7XG5pbXBvcnQgQXNzaWduSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvSGVhZGVyL0Fzc2lnbkhlYWRlclwiO1xuaW1wb3J0IFJlYXNzaWduSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvSGVhZGVyL1JlYXNzaWduSGVhZGVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcblxuY29uc3QgVGlja2V0QXNzaWduID0gKHsgdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIG9wZW4sIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3NhdmVNZXNzYWdlLCBzZXRTYXZlTWVzc2FnZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW2Fzc2lnbk9wdGlvbiwgc2V0QXNzaWduT3B0aW9uXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbYXNzaWduYXRpb25JblByb2dyZXNzLCBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3NdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgaXNBc3NpZ25lZFRvTWUgPSB1c2VyUHJvZmlsZT8uZW1haWwgPT09IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuICBjb25zdCB7IGFsbG93c0RlbGVnYXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgY29uc3Qgb25Bc3NpZ24gPSAoZW1haWwsIG1lc3NhZ2UgPSBcIlwiKSA9PiB7XG4gICAgaWYgKG93bmVySWQpIHtcbiAgICAgIGRpc3BhdGNoKHJlYXNzaWduVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkpLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoYCR7YXNzaWduT3B0aW9ufWApO1xuICAgICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsKSkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBvbkRlbGVnYXRlID0gKGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsKSA9PiB7XG4gICAgZGlzcGF0Y2goXG4gICAgICBkZWxlZ2F0ZVRpY2tldChvcmRlcklkLCB0aWNrZXRJZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpXG4gICAgKS50aGVuKCgpID0+IHtcbiAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZUVRRm9ybSA9ICgpID0+IHtcbiAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoXCJcIik7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VTYXZlTWVzc2FnZSA9ICgpID0+IHtcbiAgICBzZXRTYXZlTWVzc2FnZShudWxsKTtcbiAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoXCJcIik7XG4gICAgc2V0VGltZW91dChvbkNsb3NlLCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2F2ZUVRID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0cmFuc2Zvcm1BbndlcnNGb3JtYXQodmFsKTtcblxuICAgIHJldHVybiBkaXNwYXRjaChzYXZlRXh0cmFRdWVzdGlvbnModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfc3VjY2Vzc1wiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdChcInRpY2tldF9hc3NpZ24uc2F2aW5nX3N1Y2Nlc3NfZGVzY3JpcHRpb25cIilcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19lcnJvclwiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3QgdGl0bGUgPSBvd25lcklkXG4gICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24udGl0bGVcIilcbiAgICA6IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24udGl0bGVcIik7XG4gIGNvbnN0IEhlYWRlciA9IG93bmVySWQgPyBSZWFzc2lnbkhlYWRlciA6IEFzc2lnbkhlYWRlcjtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8UmlnaHREcmF3ZXJcbiAgICAgICAgaWQ9XCJyZWFzc2lnbkRyYXdlclwiXG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgID5cbiAgICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRSZWFzc2lnbkNvbnRhaW5lcn0+XG4gICAgICAgICAgICA8SGVhZGVyXG4gICAgICAgICAgICAgIGluUHJvZ3Jlc3M9e2Fzc2lnbmF0aW9uSW5Qcm9ncmVzc31cbiAgICAgICAgICAgICAgYWxsb3dzRGVsZWdhdGU9e2FsbG93c0RlbGVnYXRlfVxuICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgdXNlckVtYWlsPXt1c2VyUHJvZmlsZS5lbWFpbH1cbiAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIHthc3NpZ25hdGlvbkluUHJvZ3Jlc3MgPyAoXG4gICAgICAgICAgICAgIDxBc3NpZ25FUUZvcm1cbiAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZUVRfVxuICAgICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbk9wdGlvbnNXcmFwcGVyfT5cbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzQXNzaWduZWRUb01lfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Bc3NpZ24odXNlclByb2ZpbGUuZW1haWwsIFwiXCIpfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdG9fbWVcIil9XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPERpdmlkZXIgdmFyaWFudD1cIm1pZGRsZVwiIHN4PXt7IG15OiAzLCBweDogNCB9fT5cbiAgICAgICAgICAgICAgICAgIG9yXG4gICAgICAgICAgICAgICAgPC9EaXZpZGVyPlxuICAgICAgICAgICAgICAgIDxCb3g+XG4gICAgICAgICAgICAgICAgICA8Q29sbGFwc2UgaW49e2Fzc2lnbk9wdGlvbiA9PT0gXCJvdGhlclwifSB0aW1lb3V0PXs1MDB9PlxuICAgICAgICAgICAgICAgICAgICA8UmVhc3NpZ25Gb3JtXG4gICAgICAgICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9eyh2YWwpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkFzc2lnbih2YWwubmV3X2F0dGVuZGVlX2VtYWlsLCB2YWwucGVyc29uYWxfbWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0QXNzaWduT3B0aW9uKG51bGwpfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAgICAgICAgICAgIHthc3NpZ25PcHRpb24gIT09IFwib3RoZXJcIiAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QXNzaWduT3B0aW9uKFwib3RoZXJcIil9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX290aGVyXCIpfVxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAge2FsbG93c0RlbGVnYXRlICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxEaXZpZGVyIHZhcmlhbnQ9XCJtaWRkbGVcIiBzeD17eyBteTogMywgcHg6IDQgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgb3JcbiAgICAgICAgICAgICAgICAgICAgPC9EaXZpZGVyPlxuICAgICAgICAgICAgICAgICAgICA8Q29sbGFwc2UgaW49e2Fzc2lnbk9wdGlvbiA9PT0gXCJtYW5hZ2VcIn0gdGltZW91dD17NTAwfT5cbiAgICAgICAgICAgICAgICAgICAgICA8RGVsZWdhdGVGb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9eyh2YWwpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZWdhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2ZpcnN0X25hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2xhc3RfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZW1haWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0QXNzaWduT3B0aW9uKG51bGwpfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvQ29sbGFwc2U+XG4gICAgICAgICAgICAgICAgICAgIHthc3NpZ25PcHRpb24gIT09IFwibWFuYWdlXCIgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24oXCJtYW5hZ2VcIil9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLm1hbmFnZV90aWNrZXRcIil9XG4gICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICl9XG4gICAgICA8L1JpZ2h0RHJhd2VyPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIXNhdmVNZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlU2F2ZU1lc3NhZ2V9XG4gICAgICAgIHRpdGxlPXtzYXZlTWVzc2FnZT8udGl0bGV9XG4gICAgICAgIGRlc2NyaXB0aW9uPXtzYXZlTWVzc2FnZT8uZGVzY3JpcHRpb259XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0QXNzaWduLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0QXNzaWduO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBBdXRvY29tcGxldGUsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuY29uc3QgQ29tcGFueUZpZWxkID0gKHsgZm9ybWlrLCBzdW1taXRJZCwgaXNSZXF1aXJlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtvcHRpb25zLCBzZXRPcHRpb25zXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgY29uc3Qge1xuICAgIGVycm9ycyxcbiAgICB2YWx1ZXMsXG4gICAgdG91Y2hlZCxcbiAgICBzZXRGaWVsZFRvdWNoZWQsXG4gICAgc2V0RmllbGRWYWx1ZSxcbiAgICBpbml0aWFsVmFsdWVzXG4gIH0gPSBmb3JtaWs7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55O1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZGlzYWJsZWQgPSAhIWluaXRpYWxWYWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlID09PSBcIlwiKSB7XG4gICAgICBzZXRPcHRpb25zKHZhbHVlID8gW3ZhbHVlXSA6IFtdKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMoc3VtbWl0SWQsIGlucHV0VmFsdWUsIChyZXN1bHRzKSA9PiB7XG4gICAgICBsZXQgbmV3T3B0aW9ucyA9IFtdO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFt2YWx1ZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN1bHRzKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbLi4ubmV3T3B0aW9ucywgLi4ucmVzdWx0c107XG4gICAgICB9XG5cbiAgICAgIHNldE9wdGlvbnMobmV3T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW3ZhbHVlLCBpbnB1dFZhbHVlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8QXV0b2NvbXBsZXRlXG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgIGF1dG9Db21wbGV0ZVxuICAgICAgZnJlZVNvbG9cbiAgICAgIGluY2x1ZGVJbnB1dEluTGlzdFxuICAgICAgZmlsdGVyU2VsZWN0ZWRPcHRpb25zXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBvbkJsdXI9eygpID0+IHNldEZpZWxkVG91Y2hlZChuYW1lLCB0cnVlLCB0cnVlKX1cbiAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiB7XG4gICAgICAgIC8vIFZhbHVlIHNlbGVjdGVkIHdpdGggZW50ZXIsIHJpZ2h0IGZyb20gdGhlIGlucHV0XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgXCJ4eHhcIiBvcHRpb24gY3JlYXRlZCBkeW5hbWljYWxseVxuICAgICAgICBpZiAob3B0aW9uLmlucHV0VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uLmlucHV0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVndWxhciBvcHRpb25cbiAgICAgICAgcmV0dXJuIG9wdGlvbi5uYW1lO1xuICAgICAgfX1cbiAgICAgIG9uQ2hhbmdlPXsoZXZlbnQsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRtcFZhbHVlID0gbmV3VmFsdWU/LmlucHV0VmFsdWUgfHwgbmV3VmFsdWU7XG4gICAgICAgIHNldE9wdGlvbnModG1wVmFsdWUgPyBbdG1wVmFsdWUsIC4uLm9wdGlvbnNdIDogb3B0aW9ucyk7XG4gICAgICAgIHNldEZpZWxkVmFsdWUobmFtZSwgdG1wVmFsdWUpO1xuICAgICAgfX1cbiAgICAgIG9uSW5wdXRDaGFuZ2U9eyhldmVudCwgbmV3SW5wdXRWYWx1ZSkgPT4ge1xuICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld0lucHV0VmFsdWUpO1xuICAgICAgfX1cbiAgICAgIGZpbHRlck9wdGlvbnM9eyhvcHRpb25zLCBwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnB1dFZhbHVlIH0gPSBwYXJhbXM7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gWy4uLm9wdGlvbnNdO1xuICAgICAgICAvLyBTdWdnZXN0IHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2YWx1ZVxuICAgICAgICBjb25zdCBpc0V4aXN0aW5nID0gb3B0aW9ucy5zb21lKFxuICAgICAgICAgIChvcHRpb24pID0+IGlucHV0VmFsdWUgPT09IG9wdGlvbi50aXRsZVxuICAgICAgICApO1xuICAgICAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gXCJcIiAmJiAhaXNFeGlzdGluZykge1xuICAgICAgICAgIGZpbHRlcmVkLnB1c2goe1xuICAgICAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIG5hbWU6IGBTZWxlY3QgXCIke2lucHV0VmFsdWV9XCJgXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICB9fVxuICAgICAgcmVuZGVySW5wdXQ9eyhwYXJhbXMpID0+IChcbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnBhcmFtc31cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfY29tcGFueVwiKX1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtoZWxwZXJUZXh0fVxuICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHJlbmRlck9wdGlvbj17KHByb3BzLCBvcHRpb24pID0+IHtcbiAgICAgICAgY29uc3QgeyBrZXksIC4uLm9wdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZ1xuICAgICAgICAgIDxsaSBrZXk9e2tleX0gey4uLm9wdGlvblByb3BzfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgIHN4PXt7IGZvbnRTaXplOiBcIjFlbVwiLCBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICAvPlxuICApO1xufTtcblxuQ29tcGFueUZpZWxkLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbXBhbnlGaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciA9ICh7XG4gIGRpc2NsYWltZXIsXG4gIGZvcm1payxcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBpc1JlcXVpcmVkID0gdHJ1ZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWQ7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciB9ID0gZm9ybWlrO1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uZGlzY2xhaW1lcl9sYWJlbFwiKX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmV4dHJhX3F1ZXN0aW9uc19mb3JtLmRpc2NsYWltZXJfbGFiZWxcIil9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5wcm9wVHlwZXMgPSB7XG4gIGRpc2NsYWltZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5cbmltcG9ydCB7XG4gIGdldFR5cGVWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi8uLi8uLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5cbmltcG9ydCBUaWNrZXRPd25lckZpZWxkcyBmcm9tIFwiLi4vVGlja2V0T3duZXJGaWVsZHNcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5pbXBvcnQgdXNlU2Nyb2xsVG9FcnJvciBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlU2Nyb2xsVG9FcnJvclwiO1xuaW1wb3J0IHtcbiAgcGFyc2VBbnN3ZXJzLFxuICBidWlsZFZhbGlkYXRpb25TY2hlbWFcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldEZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBzdW1taXQsXG4gIGNhbkVkaXQsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYW5zd2VycyA9IHRpY2tldD8ub3duZXI/LmV4dHJhX3F1ZXN0aW9ucy5yZWR1Y2UoKHJlcywgYW5zKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKGFucy5xdWVzdGlvbi5uYW1lLCBhbnMucXVlc3Rpb24uaWQpO1xuICAgIHJlc1txdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbHVlKGFucy52YWx1ZSwgYW5zLnF1ZXN0aW9uLnR5cGUpO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYW5zd2VycyxcbiAgICAgIHRydWUsXG4gICAgICB0cnVlXG4gICAgKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIHRydWUsXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWssIFwiZGV0YWlsc0RyYXdlclwiKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRpY2tldE93bmVyRmllbGRzXG4gICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICBpc0RlbGVnYXRlZD17ISF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWR9XG4gICAgICAgIHN1bW1pdElkPXtzdW1taXQuaWR9XG4gICAgICAgIGRpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgIC8+XG5cbiAgICAgIHtleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYWRkaXRpb25hbERldGFpbHN9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmFkaXRpb25hbF9kZXRhaWxzXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHNcbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIGFsbG93RWRpdD17Y2FuRWRpdH1cbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIGlzRGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9kZXRhaWwuc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblRpY2tldEZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0Rm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29tcGFueUZpZWxkIGZyb20gXCIuLi9Db21wYW55RmllbGRcIjtcblxuY29uc3QgVGlja2V0T3duZXJGaWVsZHMgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBkaXNhYmxlZCwgaXNEZWxlZ2F0ZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciwgaW5pdGlhbFZhbHVlcyB9ID1cbiAgICBmb3JtaWs7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT17VElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWx9XG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5lbWFpbFwiKX1cbiAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgdmFsdWU9e3ZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF19XG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAvPlxuICAgICAge2lzRGVsZWdhdGVkICYmIChcbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgc3g9e3sgZm9udFdlaWdodDogNTAwLCBtYXJnaW46IFwiMTBweCAwXCIgfX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLm1hbmFnZV9mb3JcIil9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICl9XG4gICAgICB7W1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZSwgVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdLm1hcChcbiAgICAgICAgKG5hbWUpID0+IChcbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIGtleT17bmFtZX1cbiAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICBsYWJlbD17dChgdGlja2V0X2RldGFpbC4ke25hbWV9YCl9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkIHx8IGlzRGVsZWdhdGVkIHx8ICEhaW5pdGlhbFZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICBlcnJvcj17dG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSl9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtmb3JtaWsudG91Y2hlZFtuYW1lXSAmJiBmb3JtaWsuZXJyb3JzW25hbWVdfVxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgKVxuICAgICAgKX1cbiAgICAgIDxDb21wYW55RmllbGQgZm9ybWlrPXtmb3JtaWt9IHN1bW1pdElkPXtzdW1taXRJZH0gaXNSZXF1aXJlZCAvPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5pbmZvTm90ZX0+e3QoXCJ0aWNrZXRfZGV0YWlsLmluZm9fbm90ZVwiKX08L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblRpY2tldE93bmVyRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNEZWxlZ2F0ZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRPd25lckZpZWxkcztcbiIsImV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBRUkNvZGUgZnJvbSBcInJlYWN0LXFyLWNvZGVcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBEcmF3ZXIsIEljb25CdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgQ2xvc2UgYXMgQ2xvc2VJY29uLFxuICBGaWxlRG93bmxvYWRPdXRsaW5lZCBhcyBEb3dubG9hZEljb24sXG4gIEVtYWlsT3V0bGluZWQgYXMgRW1haWxJY29uXG59IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBUV09fSVRFTSB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuaW1wb3J0IHtcbiAgZ2V0VGlja2V0UERGLFxuICBzYXZlVGlja2V0RGV0YWlscyxcbiAgcmVzZW5kTm90aWZpY2F0aW9uXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0RGV0YWlsID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRJZCxcbiAgb3JkZXJJZCxcbiAgb3duZXJJZCxcbiAgb3BlbixcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9ID0gdXNlR2V0VGlja2V0KFxuICAgIHRpY2tldElkLFxuICAgIG9yZGVySWQsXG4gICAgb3duZXJJZCxcbiAgICBvcGVuXG4gICk7XG4gIGNvbnN0IFtzYXZlTWVzc2FnZSwgc2V0U2F2ZU1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFtzZW50Q29uZmlybWF0aW9uLCBzZXRTZW50Q29uZmlybWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXI/Lm93bmVyX2lkID09PSB1c2VyUHJvZmlsZT8uaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlPy5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuICBjb25zdCB7IGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBvblNhdmUgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVUaWNrZXREZXRhaWxzKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19zdWNjZXNzX2Rlc2NyaXB0aW9uXCIpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfZXJyb3JcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGVyci50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VTYXZlTWVzc2FnZSA9ICgpID0+IHtcbiAgICBzZXRTYXZlTWVzc2FnZShudWxsKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgY29uc3QgZG93bmxvYWRUaWNrZXRQZGYgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2goZ2V0VGlja2V0UERGKHRpY2tldCkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2VuZEVtYWlsID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2VuZE5vdGlmaWNhdGlvbih0aWNrZXQpKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFNlbnRDb25maXJtYXRpb24odHJ1ZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U2VudENvbmZpcm1hdGlvbihmYWxzZSk7XG4gICAgICB9LCBNSUxMSVNFQ19UT19TRUMgKiBUV09fSVRFTSk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPERyYXdlclxuICAgICAgICBpZD1cImRldGFpbHNEcmF3ZXJcIlxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldERldGFpbENvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbG9zZUJ0bn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICAgICAgICAgIHt0aWNrZXQ/LnRpY2tldF90eXBlPy5uYW1lfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5wdXJjaGFzZWRfYnlcIil9IHt0aWNrZXQ/Lm9yZGVyPy5vd25lcl9lbWFpbH1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuXG4gICAgICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5xckNvZGV9PlxuICAgICAgICAgICAgICAgICAgICA8UVJDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MjU2fVxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGlja2V0LnFyX2NvZGV9XG4gICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNTYgMjU2XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXMuc3RhdHVzfT57dChcInRpY2tldF9kZXRhaWwuc3RhdHVzXCIpfTwvcD5cbiAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5xck5vdGV9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5xcl9ub3RlXCIpfVxuICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIHshc3VtbWl0Py5pc192aXJ0dWFsICYmIGlzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRvd25sb2FkQnRufVxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZG93bmxvYWRUaWNrZXRQZGZ9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxEb3dubG9hZEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kb3dubG9hZFwiKX1cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5zZW5kQnRufSAke1xuICAgICAgICAgICAgICAgICAgICAgIHNlbnRDb25maXJtYXRpb24gPyBzdHlsZXMuc2VudCA6IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uU2VuZEVtYWlsfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17c2VudENvbmZpcm1hdGlvbn1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEVtYWlsSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAge3NlbnRDb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICA/IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbnRcIilcbiAgICAgICAgICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbmRcIil9XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTnVtYmVyfT5cbiAgICAgICAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICAgICAgICB3aWR0aD17MTUwfVxuICAgICAgICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiaDRcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2luZm9ybWF0aW9uXCIpfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIHt0aWNrZXQgJiYgKFxuICAgICAgICAgICAgICAgIDxUaWNrZXRGb3JtXG4gICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlfVxuICAgICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L0RyYXdlcj5cbiAgICAgIDxDdXN0b21EaWFsb2dcbiAgICAgICAgb3Blbj17ISFzYXZlTWVzc2FnZX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZVNhdmVNZXNzYWdlfVxuICAgICAgICB0aXRsZT17c2F2ZU1lc3NhZ2U/LnRpdGxlfVxuICAgICAgICBkZXNjcmlwdGlvbj17c2F2ZU1lc3NhZ2U/LmRlc2NyaXB0aW9ufVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGV0YWlsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0U3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IHJlZnVuZFJlcXVlc3RzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uZmluZChcbiAgICAocikgPT4gci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCJcbiAgKTtcbiAgY29uc3QgeyBpc0luY29tcGxldGUsIGlzVW5hc3NpZ25lZCwgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRTdGF0dXNDb250YWluZXJ9PlxuICAgICAge2lzQWN0aXZlID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIHshIXJlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHJlZnVuZCByZXF1ZXN0ZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNJbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGluY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25JbmNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfaW5jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzVW5hc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyB1bmFzc2lnbmVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uVW5hc3NpZ25lZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNhbmNlbGxlZFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ2FuY2VsbGVkfWB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcblxuVGlja2V0U3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgcmVmdW5kUmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRGl2aWRlcixcbiAgVGFiLFxuICBUYWJzLFxuICB1c2VNZWRpYVF1ZXJ5LFxuICB1c2VUaGVtZVxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRklSU1RfUEFHRSxcbiAgVEFCU1xufSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgTXlPcmRlcnNUaWNrZXRzIGZyb20gXCIuLi9NeU9yZGVyc1RpY2tldHNcIjtcbmltcG9ydCBBc3NpZ25lZFRvTWUgZnJvbSBcIi4uL09yZGVyc0xpc3QvQXNzaWduZWRUb01lXCI7XG5pbXBvcnQge1xuICBnZXRUaWNrZXRzQnlPcmRlcixcbiAgZ2V0VXNlck9yZGVycyxcbiAgZ2V0VXNlclRpY2tldHNcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgV2lkZ2V0VGFicyA9ICh7IHRpdGxlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdGFiLCBzZXRUYWJdID0gdXNlU3RhdGUoVEFCUy5PUkRFUlMpO1xuICBjb25zdCBbdGlja2V0c0Z1bGx5TG9hZGVkLCBzZXRUaWNrZXRzRnVsbHlMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXIsXG4gICAgc29ydCxcbiAgICBvcmRlcnNfcGVyX3BhZ2U6IG9yZGVyc1BlclBhZ2UsXG4gICAgdGlja2V0X3Blcl9wYWdlOiB0aWNrZXRQZXJQYWdlLFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIG1lbWJlck9yZGVyc1xuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG5cbiAgY29uc3QgaGFuZGxlVGFiQ2hhbmdlID0gKF8sIG5ld1RhYikgPT4ge1xuICAgIHNldFRhYihuZXdUYWIpO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoQXNzaWduZWRUaWNrZXRzID0gKHBhZ2UpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRVc2VyVGlja2V0cyh7IHBhZ2UsIHBlclBhZ2U6IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsIGZpbHRlciwgc29ydCB9KVxuICAgICk7XG5cbiAgY29uc3QgZmV0Y2hPcmRlclRpY2tldHMgPSAocGFnZSkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFVzZXJPcmRlcnMoe1xuICAgICAgICBwYWdlLFxuICAgICAgICBwZXJQYWdlOiBvcmRlcnNQZXJQYWdlLFxuICAgICAgICBmaWx0ZXIsXG4gICAgICAgIHNvcnRcbiAgICAgIH0pXG4gICAgKS50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBvcmRlclRpY2tldHNQcm9taXNlcyA9IGRhdGEubWFwKChvcmRlcikgPT5cbiAgICAgICAgZGlzcGF0Y2goXG4gICAgICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgICAgICBjdXJyZW50X3BhZ2U6IEZJUlNUX1BBR0UsXG4gICAgICAgICAgICBwZXJQYWdlOiB0aWNrZXRQZXJQYWdlLFxuICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgc29ydFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChvcmRlclRpY2tldHNQcm9taXNlcyk7XG4gICAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBmZXRjaFByb21pc2VzID0gW1xuICAgICAgZmV0Y2hBc3NpZ25lZFRpY2tldHMoRklSU1RfUEFHRSksXG4gICAgICBmZXRjaE9yZGVyVGlja2V0cyhGSVJTVF9QQUdFKVxuICAgIF07XG4gICAgUHJvbWlzZS5hbGwoZmV0Y2hQcm9taXNlcykudGhlbigoKSA9PiBzZXRUaWNrZXRzRnVsbHlMb2FkZWQodHJ1ZSkpO1xuICB9LCBbZmlsdGVyLCBzb3J0XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGlja2V0c0Z1bGx5TG9hZGVkKSB7XG4gICAgICBpZiAobWVtYmVyT3JkZXJzPy5sZW5ndGggPT09IDAgJiYgdXNlclRpY2tldHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgc2V0VGFiKFRBQlMuVElDS0VUUyk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbdGlja2V0c0Z1bGx5TG9hZGVkXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRhYldyYXBwZXJ9PlxuICAgICAgPFRhYnNcbiAgICAgICAgdmFsdWU9e3RhYn1cbiAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRhYkNoYW5nZX1cbiAgICAgICAgdmFyaWFudD17aXNNb2JpbGUgPyBcImZ1bGxXaWR0aFwiIDogXCJzdGFuZGFyZFwifVxuICAgICAgPlxuICAgICAgICA8VGFiIGxhYmVsPXt0KFwib3JkZXJzLnRpdGxlXCIpfSB2YWx1ZT17VEFCUy5PUkRFUlN9IC8+XG4gICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuYXNzaWduZWRfdG9fbWVcIil9IHZhbHVlPXtUQUJTLlRJQ0tFVFN9IC8+XG4gICAgICA8L1RhYnM+XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEJveCBzeD17eyBwdDogNiwgcGI6IDMgfX0+e3RpdGxlfTwvQm94PlxuICAgICAge3RhYiA9PT0gVEFCUy5PUkRFUlMgJiYgPE15T3JkZXJzVGlja2V0cyBmZXRjaERhdGE9e2ZldGNoT3JkZXJUaWNrZXRzfSAvPn1cbiAgICAgIHt0YWIgPT09IFRBQlMuVElDS0VUUyAmJiAoXG4gICAgICAgIDxBc3NpZ25lZFRvTWUgZmV0Y2hEYXRhPXtmZXRjaEFzc2lnbmVkVGlja2V0c30gLz5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRUYWJzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCwgY29ubmVjdCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIHJlc2V0RmlsdGVyLFxuICByZXNldEVycm9yLFxuICBjaGFuZ2VTb3J0LFxuICBjaGFuZ2VGaWx0ZXJcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBDdXN0b21UaGVtZSBmcm9tIFwiLi4vQ3VzdG9tVGhlbWVcIjtcbmltcG9ydCBMb2FkZXIgZnJvbSBcIi4uL0xvYWRlclwiO1xuaW1wb3J0IEN1c3RvbURpYWxvZ0NvbnRleHQgZnJvbSBcIi4uL0N1c3RvbURpYWxvZy9Db250ZXh0XCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nIGZyb20gXCIuLi9DdXN0b21EaWFsb2dcIjtcblxuaW1wb3J0IEZpbHRlcnMgZnJvbSBcIi4uL0ZpbHRlcnNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBXaWRnZXRUYWJzIGZyb20gXCIuLi9XaWRnZXRUYWJzXCI7XG5pbXBvcnQgU3VtbWl0SGVhZGVyIGZyb20gXCIuLi9TdW1taXRIZWFkZXJcIjtcblxuY29uc3QgV2lkZ2V0V3JhcHBlciA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFttZXNzYWdlLCBzZXRNZXNzYWdlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbbWVzc2FnZUNhbGxiYWNrLCBzZXRNZXNzYWdlQ2FsbGJhY2tdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nLFxuICAgIGFwaUVycm9yLFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX09SREVSX05VTUJFUjogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3Qgb25SZXNldCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldEZpbHRlcigpKTtcbiAgfTtcblxuICBjb25zdCByZXNldEFwaUVycm9yID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RXJyb3IoKSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBpRXJyb3IpIHtcbiAgICAgIHNldE1lc3NhZ2UoYXBpRXJyb3IpO1xuICAgICAgc2V0TWVzc2FnZUNhbGxiYWNrKHJlc2V0QXBpRXJyb3IpO1xuICAgIH1cbiAgfSwgW2FwaUVycm9yXSk7XG5cbiAgY29uc3Qgb25GaWx0ZXIgPSAoZmlsdGVyVmFsdWUpID0+IHtcbiAgICBkaXNwYXRjaChjaGFuZ2VGaWx0ZXIoZmlsdGVyVmFsdWUpKTtcbiAgfTtcblxuICBjb25zdCBvblNvcnQgPSAoc29ydFZhbHVlKSA9PiB7XG4gICAgZGlzcGF0Y2goY2hhbmdlU29ydChzb3J0VmFsdWUpKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxDdXN0b21UaGVtZT5cbiAgICAgIDxMb2FkZXIgb3Blbj17bG9hZGluZ30gLz5cbiAgICAgIDxDdXN0b21EaWFsb2dcbiAgICAgICAgb3Blbj17ISFtZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiB7XG4gICAgICAgICAgc2V0TWVzc2FnZShudWxsKTtcbiAgICAgICAgICBpZiAobWVzc2FnZUNhbGxiYWNrKSBtZXNzYWdlQ2FsbGJhY2soKTtcbiAgICAgICAgfX1cbiAgICAgICAgYm9keT17bWVzc2FnZT8uYm9keX1cbiAgICAgICAgdGl0bGU9e21lc3NhZ2U/LnRpdGxlfVxuICAgICAgLz5cbiAgICAgIDxGaWx0ZXJzXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94IHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19PlxuICAgICAgICA8aDMgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0c1RpdGxlVGV4dH0+XG4gICAgICAgICAge2ZpbHRlclZhbHVlc1xuICAgICAgICAgICAgPyB0KFwibGFiZWxzLnNlYXJjaF9yZXN1bHRzXCIsIHsgZmlsdGVyOiBmaWx0ZXJWYWx1ZXMgfSlcbiAgICAgICAgICAgIDogdChcImxhYmVscy50aWNrZXRzXCIpfVxuICAgICAgICA8L2gzPlxuICAgICAgPC9Cb3g+XG4gICAgICA8Q3VzdG9tRGlhbG9nQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17KHNldE1lc3NhZ2UsIHNldE1lc3NhZ2VDYWxsYmFjayl9PlxuICAgICAgICA8V2lkZ2V0VGFicyB0aXRsZT17PFN1bW1pdEhlYWRlciAvPn0gLz5cbiAgICAgIDwvQ3VzdG9tRGlhbG9nQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L0N1c3RvbVRoZW1lPlxuICApO1xufTtcblxuY29uc3QgbWFwU3RhdGVUb1Byb3BzID0gKHsgd2lkZ2V0U3RhdGUgfSkgPT4gKHtcbiAgc29ydDogd2lkZ2V0U3RhdGUuc29ydCxcbiAgZmlsdGVyOiB3aWRnZXRTdGF0ZS5maWx0ZXJcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywge30pKFdpZGdldFdyYXBwZXIpO1xuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IGdldEV4dHJhUXVlc3Rpb25zLCBnZXRUaWNrZXQgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuXG5jb25zdCB1c2VHZXRUaWNrZXQgPSAodGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIHJ1bikgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocnVuKSB7XG4gICAgICBpZiAodGlja2V0SWQgJiYgb3JkZXJJZCkge1xuICAgICAgICBkaXNwYXRjaChnZXRUaWNrZXQodGlja2V0SWQsIG9yZGVySWQpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG93bmVySWQpIHtcbiAgICAgICAgZGlzcGF0Y2goZ2V0RXh0cmFRdWVzdGlvbnMob3duZXJJZCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3RpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBydW5dKTtcblxuICBjb25zdCB7IGV4dHJhUXVlc3Rpb25zLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGVcbiAgKTtcblxuICByZXR1cm4geyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VHZXRUaWNrZXQ7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gU21vb3RoIHNjcm9sbGluZyBmdW5jdGlvbiB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbmZ1bmN0aW9uIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgdGFyZ2V0U2Nyb2xsVG9wLCBkdXJhdGlvbikge1xuICBjb25zdCBzdGFydFNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gIGNvbnN0IGRpc3RhbmNlID0gdGFyZ2V0U2Nyb2xsVG9wIC0gc3RhcnRTY3JvbGxUb3A7XG4gIGxldCBzdGFydFRpbWUgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIGFuaW1hdGlvblN0ZXAodGltZXN0YW1wKSB7XG4gICAgaWYgKCFzdGFydFRpbWUpIHN0YXJ0VGltZSA9IHRpbWVzdGFtcDtcbiAgICBjb25zdCBlbGFwc2VkID0gdGltZXN0YW1wIC0gc3RhcnRUaW1lO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGgubWluKGVsYXBzZWQgLyBkdXJhdGlvbiwgMSk7XG4gICAgY29uc3QgZWFzZUluT3V0UXVhZCA9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgcHJvZ3Jlc3MgPCAwLjUgPyAyICogcHJvZ3Jlc3MgKiogMiA6IDEgLSAoLTIgKiBwcm9ncmVzcyArIDIpICoqIDIgLyAyO1xuXG4gICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IHN0YXJ0U2Nyb2xsVG9wICsgZGlzdGFuY2UgKiBlYXNlSW5PdXRRdWFkO1xuXG4gICAgaWYgKGVsYXBzZWQgPCBkdXJhdGlvbikge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblN0ZXApO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbn1cblxuY29uc3QgdXNlU2Nyb2xsVG9FcnJvciA9IChmb3JtaWssIGNvbnRhaW5lcklkKSA9PiB7XG4gIGNvbnN0IHsgZXJyb3JzLCBpc1ZhbGlkLCBpc1N1Ym1pdHRpbmcgfSA9IGZvcm1paztcbiAgY29uc3QgZXJyb3JBcnJheSA9IE9iamVjdC5rZXlzKGVycm9ycyk7XG4gIGNvbnN0IGVycm9yQ291bnQgPSBlcnJvckFycmF5Lmxlbmd0aDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1ZhbGlkIHx8IGVycm9yQ291bnQgPT09IDApIHJldHVybjtcblxuICAgIC8vIHNvcnQgZWxlbWVudHMgYnkgcG9zaXRpb25cbiAgICBjb25zdCBlbGVtZW50c1NvcnRlZCA9IGVycm9yQXJyYXlcbiAgICAgIC5yZWR1Y2UoKHJlc3VsdCwgZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtuYW1lPScke2Vycm9yfSddYCk7XG4gICAgICAgIGlmICghZWxlbWVudCkgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICBjb25zdCBlbFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICByZXN1bHQucHVzaCh7IGVsZW1lbnQsIGVycm9yLCB0b3A6IGVsUmVjdC50b3AgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sIFtdKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEudG9wIC0gYi50b3ApO1xuXG4gICAgaWYgKGVsZW1lbnRzU29ydGVkLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnRcbiAgICAgIC5nZXRFbGVtZW50QnlJZChjb250YWluZXJJZClcbiAgICAgIC5xdWVyeVNlbGVjdG9yKFwiLk11aURyYXdlci1wYXBlclwiKTtcbiAgICBjb25zdCB0YXJnZXQgPSBlbGVtZW50c1NvcnRlZFswXTtcblxuICAgIGlmIChjb250YWluZXI/LmNvbnRhaW5zKHRhcmdldC5lbGVtZW50KSkge1xuICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBvZmZzZXQgb2YgdGhlIHRhcmdldCBlbGVtZW50IHJlbGF0aXZlIHRvIHRoZSBjb250YWluZXJcbiAgICAgIGNvbnN0IGVsZW1PZmZlc3QgPSAxMDA7XG4gICAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9IDUwMDtcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XG4gICAgICAgIHRhcmdldC50b3AgLSBjb250YWluZXJSZWN0LnRvcCArIGNvbnRhaW5lci5zY3JvbGxUb3AgLSBlbGVtT2ZmZXN0O1xuXG4gICAgICAvLyBTY3JvbGwgdGhlIGNvbnRhaW5lciB0byB0aGUgdGFyZ2V0IGVsZW1lbnQncyBwb3NpdGlvblxuICAgICAgc21vb3RoU2Nyb2xsVG8oY29udGFpbmVyLCBzY3JvbGxUb3AsIGFuaW1hdGlvbkR1cmF0aW9uKTsgLy8gNTAwbXMgZHVyYXRpb25cbiAgICB9XG4gIH0sIFtpc1N1Ym1pdHRpbmddKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVNjcm9sbFRvRXJyb3I7XG4iLCJpbXBvcnQgeyBpc1RpY2tldFJlZnVuZGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiQ29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiSW5jb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIkNhbmNlbGxlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJVbmFzc2lnbmVkXCI7XG5cbmV4cG9ydCBjb25zdCB1c2VUaWNrZXREZXRhaWxzID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBnZXRTdGF0dXMgPSAoKSA9PiB7XG4gICAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcbiAgICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG4gICAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuICAgIHJldHVybiB0aWNrZXQub3duZXIuc3RhdHVzO1xuICB9O1xuXG4gIGlmICghdGlja2V0KSByZXR1cm4ge307XG5cbiAgY29uc3Qgc3RhdHVzID0gZ2V0U3RhdHVzKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZSAmJiBzdGF0dXMgIT09IFNUQVRVU19DQU5DRUxMRUQ7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpO1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0ZSA9XG4gICAgdGlja2V0Py50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX2RlbGVnYXRlIHx8XG4gICAgdGlja2V0Py5wcm9tb19jb2RlPy5hbGxvd3NfdG9fZGVsZWdhdGU7XG4gIGNvbnN0IGlzQ29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19DT01QTEVURTtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gc3RhdHVzID09PSBTVEFUVVNfVU5BU1NJR05FRDtcbiAgY29uc3QgaXNJbmNvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfSU5DT01QTEVURTtcbiAgY29uc3QgY2FuUmVhc3NpZ24gPVxuICAgICFpc1VuYXNzaWduZWQgJiZcbiAgICB0aWNrZXQudGlja2V0X3R5cGU/LmFsbG93c190b19yZWFzc2lnbiAmJlxuICAgICghdGlja2V0LnByb21vX2NvZGUgfHwgdGlja2V0LnByb21vX2NvZGU/LmFsbG93c190b19yZWFzc2lnbik7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0dXMsXG4gICAgaXNDb21wbGV0ZSxcbiAgICBpc1VuYXNzaWduZWQsXG4gICAgaXNJbmNvbXBsZXRlLFxuICAgIGlzQWN0aXZlLFxuICAgIGlzUmVmdW5kYWJsZSxcbiAgICBhbGxvd3NEZWxlZ2F0ZSxcbiAgICBjYW5SZWFzc2lnblxuICB9O1xufTtcbiIsImltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBpbml0UmVhY3RJMThuZXh0IH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBMYW5ndWFnZURldGVjdG9yIGZyb20gXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiO1xuaW1wb3J0IGVuIGZyb20gXCIuL2xvY2FsZXMvZW4uanNvblwiO1xuaW1wb3J0IGVzIGZyb20gXCIuL2xvY2FsZXMvZXMuanNvblwiO1xuXG4vLyBpbXBvcnQgQmFja2VuZCBmcm9tICdpMThuZXh0LWh0dHAtYmFja2VuZCc7XG4vLyBkb24ndCB3YW50IHRvIHVzZSB0aGlzP1xuLy8gaGF2ZSBhIGxvb2sgYXQgdGhlIFF1aWNrIHN0YXJ0IGd1aWRlXG4vLyBmb3IgcGFzc2luZyBpbiBsbmcgYW5kIHRyYW5zbGF0aW9ucyBvbiBpbml0XG5cbmkxOG5cbiAgLy8gbG9hZCB0cmFuc2xhdGlvbiB1c2luZyBodHRwIC0+IHNlZSAvcHVibGljL2xvY2FsZXMgKGkuZS4gaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvcmVhY3QtaTE4bmV4dC90cmVlL21hc3Rlci9leGFtcGxlL3JlYWN0L3B1YmxpYy9sb2NhbGVzKVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWh0dHAtYmFja2VuZFxuICAvLyB3YW50IHlvdXIgdHJhbnNsYXRpb25zIHRvIGJlIGxvYWRlZCBmcm9tIGEgcHJvZmVzc2lvbmFsIENETj8gPT4gaHR0cHM6Ly9naXRodWIuY29tL2xvY2l6ZS9yZWFjdC10dXRvcmlhbCNzdGVwLTItLS11c2UtdGhlLWxvY2l6ZS1jZG5cbiAgLy8gLnVzZShCYWNrZW5kKVxuICAvLyBkZXRlY3QgdXNlciBsYW5ndWFnZVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VEZXRlY3RvclxuICAudXNlKExhbmd1YWdlRGV0ZWN0b3IpXG4gIC8vIHBhc3MgdGhlIGkxOG4gaW5zdGFuY2UgdG8gcmVhY3QtaTE4bmV4dC5cbiAgLnVzZShpbml0UmVhY3RJMThuZXh0KVxuICAvLyBpbml0IGkxOG5leHRcbiAgLy8gZm9yIGFsbCBvcHRpb25zIHJlYWQ6IGh0dHBzOi8vd3d3LmkxOG5leHQuY29tL292ZXJ2aWV3L2NvbmZpZ3VyYXRpb24tb3B0aW9uc1xuICAuaW5pdCh7XG4gICAgZmFsbGJhY2tMbmc6IFwiZW5cIixcbiAgICBkZWJ1ZzogZmFsc2UsXG4gICAgcmVzb3VyY2VzOiB7XG4gICAgICBlbjogeyB0cmFuc2xhdGlvbjogZW4gfSxcbiAgICAgIGVzOiB7IHRyYW5zbGF0aW9uOiBlcyB9XG4gICAgfSxcbiAgICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgICBlc2NhcGVWYWx1ZTogZmFsc2UgLy8gbm90IG5lZWRlZCBmb3IgcmVhY3QgYXMgaXQgZXNjYXBlcyBieSBkZWZhdWx0XG4gICAgfVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgaTE4bjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgeyBMT0dPVVRfVVNFUiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFNUQVJUX0xPQURJTkcsXG4gIFNUT1BfTE9BRElORyxcbiAgUkVTRVRfTE9BRElOR1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBSRVNFVF9TVEFURSxcbiAgUkVTRVRfRklMVEVSLFxuICBTRVRfU1RBVEUsXG4gIFNFVF9VU0VSLFxuICBHRVRfVVNFUl9PUkRFUlMsXG4gIEdFVF9NWV9BU1NJR05FRF9USUNLRVRTLFxuICBHRVRfVElDS0VUU19CWV9PUkRFUixcbiAgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCxcbiAgUkVDRUlWRV9USUNLRVQsXG4gIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TLFxuICBVUERBVEVfVElDS0VULFxuICBBU1NJR05fVElDS0VULFxuICBSRVNFVF9BUElfRVJST1IsXG4gIFNFVF9BUElfRVJST1IsXG4gIFJFU0VUX1RJQ0tFVCxcbiAgQ0hBTkdFX0ZJTFRFUixcbiAgQ0hBTkdFX1NPUlQsXG4gIEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSxcbiAgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIsXG4gIEZJTFRFUl9WQVJfREFURSxcbiAgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSxcbiAgRklMVEVSX1ZBUl9GUkVFX1BBSUQsXG4gIEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCxcbiAgRklMVEVSX1ZBUl9QUk9NT0NPREUsXG4gIERFTEVHQVRFX1RJQ0tFVFxufSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBGSVJTVF9QQUdFLCBUQUJTIH0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBoYXNMb2FkZWRBbGxEYXRhIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgREVGQVVMVF9GSUxURVJfU1RBVEUgPSB7XG4gIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfREFURV06IG51bGxcbn07XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7XG4gIHN1bW1pdDogbnVsbCxcbiAgdXNlcjoge30sXG4gIHdpZGdldExvYWRpbmc6IGZhbHNlLFxuICBtZW1iZXJPcmRlcnM6IFtdLFxuICB1c2VyVGlja2V0czogW10sXG4gIGV4dHJhUXVlc3Rpb25zOiBbXSxcbiAgY3VycmVudFRpY2tldDogbnVsbCxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGN1cnJlbnRfdGFiOiBUQUJTLk9SREVSUyxcbiAgc29ydDoge30sXG4gIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gIG9yZGVyc19jdXJyZW50X3BhZ2U6IDAsXG4gIG9yZGVyc19sYXN0X3BhZ2U6IDAsXG4gIG9yZGVyc19wZXJfcGFnZTogNSxcbiAgb3JkZXJzX3RvdGFsOiAwLFxuICB0aWNrZXRfY3VycmVudF9wYWdlOiAwLFxuICB0aWNrZXRfbGFzdF9wYWdlOiAwLFxuICB0aWNrZXRfcGVyX3BhZ2U6IDUsXG4gIHRpY2tldF90b3RhbDogMCxcbiAgdXNlcl90aWNrZXRzX3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlOiAwLFxuICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlOiAwLFxuICBhcGlFcnJvcjogbnVsbFxufTtcblxuY29uc3QgV2lkZ2V0UmVkdWNlciA9IChzdGF0ZSA9IERFRkFVTFRfU1RBVEUsIHsgdHlwZSwgcGF5bG9hZCB9ID0ge30pID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBMT0dPVVRfVVNFUjpcbiAgICBjYXNlIFJFU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIERFRkFVTFRfU1RBVEU7XG4gICAgY2FzZSBTVEFSVF9MT0FESU5HOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGxvYWRpbmc6IHRydWUgfTtcbiAgICBjYXNlIFNUT1BfTE9BRElORzpcbiAgICBjYXNlIFJFU0VUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogZmFsc2UgfTtcbiAgICBjYXNlIFJFU0VUX0FQSV9FUlJPUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogbnVsbCB9O1xuICAgIGNhc2UgUkVTRVRfRklMVEVSOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gICAgICAgIHNvcnQ6IHt9LFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiAxXG4gICAgICB9O1xuICAgIGNhc2UgU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIC4uLnBheWxvYWQgfTtcbiAgICBjYXNlIFNFVF9BUElfRVJST1I6IHtcbiAgICAgIGNvbnN0IHsgdGl0bGUsIGh0bWw6IGJvZHkgfSA9IHBheWxvYWQ7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYXBpRXJyb3I6IHsgdGl0bGUsIGJvZHkgfSB9O1xuICAgIH1cbiAgICBjYXNlIFNFVF9VU0VSOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHVzZXI6IHBheWxvYWQgfTtcbiAgICBjYXNlIENIQU5HRV9GSUxURVI6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBmaWx0ZXI6IHsgLi4uc3RhdGUuZmlsdGVyLCAuLi5wYXlsb2FkIH0gfTtcbiAgICB9XG4gICAgY2FzZSBDSEFOR0VfU09SVDoge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNvcnQ6IHsgLi4ucGF5bG9hZCB9IH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1VTRVJfT1JERVJTOiB7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgaWYgKGhhc0xvYWRlZEFsbERhdGEoY3VycmVudF9wYWdlLCBzdGF0ZS5tZW1iZXJPcmRlcnMsIHRvdGFsKSlcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjb25zdCBtZW1iZXJPcmRlcnMgPVxuICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLnN0YXRlLm1lbWJlck9yZGVycywgLi4uZGF0YV07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnMsXG4gICAgICAgIG9yZGVyc190b3RhbDogdG90YWwsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9NWV9BU1NJR05FRF9USUNLRVRTOiB7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgaWYgKGhhc0xvYWRlZEFsbERhdGEoY3VycmVudF9wYWdlLCBzdGF0ZS51c2VyVGlja2V0cywgdG90YWwpKVxuICAgICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICAgIGNvbnN0IHVzZXJUaWNrZXRzID1cbiAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5zdGF0ZS51c2VyVGlja2V0cywgLi4uZGF0YV07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB1c2VyVGlja2V0cyxcbiAgICAgICAgdXNlcl90aWNrZXRzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlLFxuICAgICAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlOiBsYXN0X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1RJQ0tFVFNfQllfT1JERVI6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgZm9ybWVyT3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZCgobykgPT4gby5pZCA9PT0gZGF0YVswXT8ub3JkZXJfaWQpO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIGZvcm1lck9yZGVyPy5tZW1iZXJUaWNrZXRzLCB0b3RhbCkpXG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5mb3JtZXJPcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV0sXG4gICAgICAgIHRpY2tldHNfcGFnZV9jdXJyZW50OiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfdG90YWw6IHRvdGFsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRDoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgdGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9IHBheWxvYWQ7XG4gICAgICBjb25zdCBvcmRlciA9IG1lbWJlck9yZGVycy5maW5kKFxuICAgICAgICAobykgPT4gby5pZCA9PT0gdGlja2V0c1JlZnVuZFJlcXVlc3RlZFswXT8ub3JkZXJfaWRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzLm1hcChcbiAgICAgICAgKHRpY2tldCkgPT5cbiAgICAgICAgICB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkLmZpbmQoKHRycikgPT4gdHJyLmlkID09PSB0aWNrZXQuaWQpIHx8IHRpY2tldFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6IHVwZGF0ZWRUaWNrZXRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVTRVRfVElDS0VUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogbnVsbCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXQgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TOiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZXh0cmFRdWVzdGlvbnM6IGRhdGEgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXREYXRhID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSBvcmRlci5tZW1iZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgaWYgKHRpY2tldC5pZCA9PT0gdGlja2V0RGF0YS5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRpY2tldERhdGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aWNrZXQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG1lbWJlck9yZGVyczogbmV3T3JkZXJzIH07XG4gICAgfVxuICAgIGNhc2UgREVMRUdBVEVfVElDS0VUOlxuICAgIGNhc2UgQVNTSUdOX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gb3JkZXIubWVtYmVyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgIGlmICh0aWNrZXQuaWQgPT09IHRpY2tldERhdGEuaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aWNrZXREYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGlja2V0O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXREYXRhLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycyB9O1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoe1xuICBjbGllbnRJZCxcbiAgbG9naW5VcmwsXG4gIHN1bW1pdCxcbiAgYXBpQmFzZVVybCxcbiAgdXBkYXRlUHJvZmlsZVxufSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB1cGRhdGVQcm9maWxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5pdExvZ091dCxcbiAgZ2V0QWNjZXNzVG9rZW5cbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L3JlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NUb2tlblNhZmVseSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0OjpnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgIGluaXRMb2dPdXQoKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgfVxufTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgU1RFUF9PTkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNURVBfVFdPID0gMjtcbmV4cG9ydCBjb25zdCBTVEVQX1RIUkVFID0gMztcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkcgPSBcIlNUQVRVU19SRUZVTkRfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRUQgPSBcIlNUQVRVU19SRUZVTkRfQVBQUk9WRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEID0gXCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDID0gXCJSZXF1ZXN0ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDID0gXCJBcHByb3ZlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMgPSBcIlJlamVjdGVkXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0NPREVTID0ge1xuICA0MDE6IDQwMSxcbiAgNDAzOiA0MDEsXG4gIDQxMjogNDAxLFxuICA1MDA6IDUwMFxufTtcblxuZXhwb3J0IGNvbnN0IFRBQlMgPSB7XG4gIE9SREVSUzogXCJPUkRFUlNcIixcbiAgVElDS0VUUzogXCJUSUNLRVRTXCJcbn07XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBMQVNUX0hPVVJfT0ZfMjRfSE9VUixcbiAgTEFTVF9NSU5VVEVfT0ZfSE9VUixcbiAgTUlMTElTRUNfVE9fU0VDLFxuICBGSVJTVF9QQUdFXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3VycmVuY3kgPSAodmFsdWUsIHsgbG9jYWxlID0gXCJlbi1VU1wiLCAuLi5vcHRpb25zIH0pID0+IHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgY3VycmVuY3k6IFwiVVNEXCIsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMlxuICB9O1xuXG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHtcbiAgICBzdHlsZTogXCJjdXJyZW5jeVwiLFxuICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG5cbiAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZERhdGUgPSAoZGF0ZXRpbWUsIHRpbWVab25lKSA9PiB7XG4gIGlmICh0aW1lWm9uZSlcbiAgICByZXR1cm4gbW9tZW50XG4gICAgICAudHooZGF0ZXRpbWUgKiBNSUxMSVNFQ19UT19TRUMsIHRpbWVab25lKVxuICAgICAgLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG5cbiAgcmV0dXJuIG1vbWVudC51bml4KGRhdGV0aW1lKS5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZU9yZGVyVG90YWxzID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGlmICghb3JkZXIgfHwgIXN1bW1pdCkgcmV0dXJuIHt9O1xuICBjb25zdCB0aWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM7XG4gIGlmICghdGlja2V0cykgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHsgcmVmdW5kZWRfYW1vdW50LCBkaXNjb3VudF9hbW91bnQsIHRheGVzX2Ftb3VudCwgYW1vdW50IH0gPSBvcmRlcjtcbiAgY29uc3QgeyB0aWNrZXRfdHlwZXMgfSA9IHN1bW1pdDtcblxuICBjb25zdCB0aWNrZXRTdW1tYXJ5ID0gW107XG4gIGxldCBwdXJjaGFzZVRpY2tldFRvdGFsID0gMDtcblxuICBjb25zdCBjdXJyZW5jeU9iamVjdCA9IHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH07XG5cbiAgT2JqZWN0LmtleXMob3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlKS5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHRpY2tldFR5cGUgPSB0aWNrZXRfdHlwZXM/LmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIGlmICghdGlja2V0VHlwZSkgcmV0dXJuIG51bGw7XG4gICAgdGlja2V0U3VtbWFyeS5wdXNoKHtcbiAgICAgIHRpY2tldF90eXBlX2lkOiB0aWNrZXRUeXBlLmlkLFxuICAgICAgdGlja2V0X3R5cGU6IHRpY2tldFR5cGUsXG4gICAgICBuYW1lOiB0aWNrZXQsXG4gICAgICBxdHk6IG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdXG4gICAgfSk7XG4gICAgcHVyY2hhc2VUaWNrZXRUb3RhbCArPVxuICAgICAgdGlja2V0VHlwZS5jb3N0ICogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF07XG5cbiAgICByZXR1cm4gdGlja2V0U3VtbWFyeTtcbiAgfSk7XG5cbiAgY29uc3QgcHVyY2hhc2VUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVGlja2V0VG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICBjb25zdCBkaXNjb3VudFRvdGFsID0gZm9ybWF0Q3VycmVuY3koZGlzY291bnRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHJlZnVuZFRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmVmdW5kZWRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHRheGVzVG90YWwgPSBmb3JtYXRDdXJyZW5jeSh0YXhlc19hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgYW1vdW50VG90YWwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3JkZXIsIFwiYW1vdW50XCIpXG4gICAgPyBmb3JtYXRDdXJyZW5jeShhbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIDogZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIHJldHVybiB7XG4gICAgZGlzY291bnRUb3RhbCxcbiAgICByZWZ1bmRUb3RhbCxcbiAgICB0YXhlc1RvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmRlclRpY2tldHMgPSAobWVtYmVyT3JkZXJzLCBvcmRlcklkKSA9PiB7XG4gIGNvbnN0IG9yZGVycyA9IG1lbWJlck9yZGVycy5maWx0ZXIoKG8pID0+IG8uaWQgPT09IG9yZGVySWQpO1xuICByZXR1cm4gb3JkZXJzWzBdPy5tZW1iZXJUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyA9ICh0cykgPT4ge1xuICBjb25zdCBsb3dlciA9IHRzLnNldEhvdXJzKDAsIDAsIDAsIDApIC8gTUlMTElTRUNfVE9fU0VDO1xuICBjb25zdCB1cHBlciA9XG4gICAgdHMuc2V0SG91cnMoTEFTVF9IT1VSX09GXzI0X0hPVVIsIExBU1RfTUlOVVRFX09GX0hPVVIsIDAsIDApIC9cbiAgICBNSUxMSVNFQ19UT19TRUM7XG4gIHJldHVybiB7XG4gICAgbG93ZXIsXG4gICAgdXBwZXJcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q3VycmVudFRpbWUgPSAoKSA9PlxuICBNYXRoLnJvdW5kKCtuZXcgRGF0ZSgpIC8gTUlMTElTRUNfVE9fU0VDKTtcblxuZXhwb3J0IGNvbnN0IGdldE5vdyA9ICgpID0+IChkaXNwYXRjaCwgZ2V0U3RhdGUpID0+IHtcbiAgY29uc3QgeyB0aW1lclN0YXRlIH0gPSBnZXRTdGF0ZSgpO1xuICByZXR1cm4gdGltZXJTdGF0ZT8ubm93VXRjID09IG51bGwgPyBkZWZhdWx0Q3VycmVudFRpbWUoKSA6IHRpbWVyU3RhdGU/Lm5vd1V0Yztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VOb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICByZXR1cm4gZGlzcGF0Y2goZ2V0Tm93KCkpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gY3VycmVudFBhZ2VcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcGFyYW0gdG90YWxcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3QgaGFzTG9hZGVkQWxsRGF0YSA9IChjdXJyZW50UGFnZSwgZGF0YSwgdG90YWwpID0+IHtcbiAgbGV0IHJlcyA9IGZhbHNlO1xuICBjb25zdCBkYXRhTGVuZ3RoID0gQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEubGVuZ3RoIDogMDtcbiAgLy8gd2UgYWxyZWFkeSBsb2FkZWQgYWxsICBkYXRhICggZmlyc3QgcGFnZSBpcyBhbHdheXMgcmVsb2FkZWQgaXQgKVxuICBpZiAoY3VycmVudFBhZ2UgPiBGSVJTVF9QQUdFICYmIGRhdGFMZW5ndGggPiAwICYmIGRhdGFMZW5ndGggPT09IHRvdGFsKVxuICAgIHJlcyA9IHRydWU7XG4gIHJldHVybiByZXM7XG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9EQVkgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFBhc3QgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHJlYXNzaWduX2RhdGUgPVxuICAgIHN1bW1pdD8ucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcblxuICByZXR1cm4gbm93ID4gcmVhc3NpZ25fZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFN0YXJ0ZWQgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQuc3RhcnRfZGF0ZSA8IG5vdztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXREYXlzRGlmZiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCBzdGFydERheSA9IG1vbWVudChzdW1taXQuc3RhcnRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBlbmREYXkgPSBtb21lbnQoc3VtbWl0LmVuZF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXMgPSBlbmREYXk/LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydERheSxcbiAgICBlbmREYXksXG4gICAgZGF5c1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyBzdGFydERheSwgZW5kRGF5LCBkYXlzIH0gPSBnZXRTdW1taXREYXlzRGlmZihzdW1taXQpO1xuICBpZiAoIXN0YXJ0RGF5IHx8ICFlbmREYXkpIHJldHVybiBudWxsO1xuICBsZXQgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGxldCBmb3JtYXRFbmREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGlmIChzdGFydERheS55ZWFyKCkgPT09IGVuZERheS55ZWFyKCkpIGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERFwiO1xuICBpZiAoc3RhcnREYXkubW9udGgoKSA9PT0gZW5kRGF5Lm1vbnRoKCkpIGZvcm1hdEVuZERhdGUgPSBcIkRELCBZWVlZXCI7XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gc3RhcnREYXkuZm9ybWF0KGZvcm1hdFN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGVuZERhdGUgPSBlbmREYXkuZm9ybWF0KGZvcm1hdEVuZERhdGUpO1xuXG4gIGlmIChkYXlzID4gT05FX0RBWSkgcmV0dXJuIGAke3N0YXJ0RGF0ZX0gLSAke2VuZERhdGV9YDtcblxuICByZXR1cm4gc3RhcnREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdExvY2F0aW9uID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbG9jYXRpb24gPSBzdW1taXQubG9jYXRpb25zPy5maW5kKFxuICAgIChsKSA9PiBsLmNsYXNzX25hbWUgPT09IFwiU3VtbWl0VmVudWVcIiAmJiBsLmlzX21haW4gPT09IHRydWVcbiAgKTtcblxuICBpZiAoIWxvY2F0aW9uKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gYCR7bG9jYXRpb24uY2l0eX0sICR7bG9jYXRpb24uY291bnRyeX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVN1bW1pdERldGFpbHMgPSAoeyBzdW1taXQgfSkgPT4ge1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcblxuICBpZiAoIXN1bW1pdCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gZ2V0U3VtbWl0TG9jYXRpb24oc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZFJlYXNzaWduRGF0ZSA9IG1vbWVudC50eihcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8udGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUgPSBnZXRTdW1taXREYXlzRGlmZihcbiAgICBub3csXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/Lm5hbWVcbiAgKTtcblxuICBjb25zdCBpc1Bhc3QgPSBjaGVja1N1bW1pdFBhc3Qoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1N0YXJ0ZWQgPSBjaGVja1N1bW1pdFN0YXJ0ZWQoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHN1bW1pdD8ubmFtZSxcbiAgICBub3csXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybWF0dGVkRGF0ZSxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgaXNQYXN0LFxuICAgIGlzU3RhcnRlZCxcbiAgICBpc1JlYXNzaWduYWJsZVxuICB9O1xufTtcbiIsImltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHtcbiAgU1RBVFVTX0NBTkNFTExFRCxcbiAgU1RBVFVTX0NPTVBMRVRFLFxuICBTVEFUVVNfSU5DT01QTEVURSxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HLFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURUQsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMsXG4gIFNUQVRVU19VTkFTU0lHTkVEXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBjaGVja0lmVmFsdWVNYXRjaCxcbiAgZ2V0VHlwZUluaXRpYWxWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3Qgc3RhdHVzRGF0YSA9IHtcbiAgW1NUQVRVU19VTkFTU0lHTkVEXToge1xuICAgIHR5cGU6IFNUQVRVU19VTkFTU0lHTkVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMudW5hc3NpZ25lZFwiKVxuICB9LFxuICBbU1RBVFVTX0lOQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0lOQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5pbmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DQU5DRUxMRURdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NBTkNFTExFRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNhbmNlbGxlZFwiKVxuICB9XG59O1xuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0tleSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcblxuICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG5cbiAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJDb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfQ09NUExFVEU7XG5cbiAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0RhdGEgPSAodGlja2V0LCBpc1N1bW1pdFBhc3QpID0+XG4gIHN0YXR1c0RhdGFbZ2V0VGlja2V0U3RhdHVzS2V5KHRpY2tldCwgaXNTdW1taXRQYXN0KV07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRSb2xlID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5iYWRnZSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgeyBmZWF0dXJlcyB9ID0gdGlja2V0LmJhZGdlO1xuXG4gIGlmIChmZWF0dXJlcy5sZW5ndGggPiAwKVxuICAgIHJldHVybiBmZWF0dXJlcy5tYXAoKGZlYXR1cmUpID0+IGZlYXR1cmUubmFtZSkuam9pbihcIiwgXCIpO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFR5cGUgPSAodGlja2V0LCBzdW1taXQpID0+XG4gIHN1bW1pdC50aWNrZXRfdHlwZXMuZmluZCgodHlwZSkgPT4gdHlwZS5pZCA9PT0gdGlja2V0LnRpY2tldF90eXBlX2lkKTtcblxuZXhwb3J0IGNvbnN0IGlzVGlja2V0UmVmdW5kYWJsZSA9ICh0aWNrZXQpID0+XG4gIHRpY2tldD8uZmluYWxfYW1vdW50ID4gMCAmJlxuICB0aWNrZXQ/Lm5ldF9zZWxsaW5nX2Nvc3QgPiB0aWNrZXQucmVmdW5kZWRfYW1vdW50ICYmXG4gICF0aWNrZXQ/LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICk7XG5cbmV4cG9ydCBjb25zdCB0aWNrZXRzUmVmdW5kYWJsZSA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkpLmxlbmd0aCB8fCAwO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PlxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKTtcbmV4cG9ydCBjb25zdCBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+IHtcbiAgY29uc3QgYWxsVGlja2V0cyA9IFtdO1xuICB0aWNrZXRzPy5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgICAgKVxuICAgICkge1xuICAgICAgYWxsVGlja2V0cy5wdXNoKHRpY2tldCk7XG4gICAgfVxuICAgIHJldHVybiB0aWNrZXQ7XG4gIH0pO1xuICByZXR1cm4gYWxsVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9BUFBST1ZFRDtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEO1xuICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBzdGF0dXMgPSBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyh0aWNrZXQpO1xuICBsZXQgc3RhdHVzQ29sb3IgPSBcIlwiO1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9QRU5ESU5HOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9BUFBST1ZFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJhcHByb3ZlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInJlamVjdGVkXCI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgfVxuICByZXR1cm4gc3RhdHVzQ29sb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbGlkYXRpb24gPSAodHlwZSwgbmFtZSwgaXNSZXF1aXJlZCkgPT4ge1xuICBsZXQgc2NoZW1hO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5ib29sKCkub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5hcnJheSgpLm9mKHl1cC5zdHJpbmcoKSk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgaWYgKGlzUmVxdWlyZWQpIHNjaGVtYSA9IHNjaGVtYS5taW4oMSwgYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufTtcblxuY29uc3QgcGFyc2VTdWJRdWVzdGlvbkFuc3dlciA9IChcbiAgcSxcbiAgYW5zd2VycyxcbiAgYW5zd2VyLFxuICBpbml0aWFsVmFsdWVzLFxuICBvbmx5UmVsZXZhbnRcbikgPT4ge1xuICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICBjb25zdCB7IHN1Yl9xdWVzdGlvbiwgYW5zd2VyX3ZhbHVlcyB9ID0gcnVsZTtcbiAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJfcXVlc3Rpb24ubmFtZSwgc3ViX3F1ZXN0aW9uLmlkKTtcbiAgICAgIGNvbnN0IHN1YkFuc3dlciA9IGFuc3dlcnNbc3ViUXVlc3Rpb25TbHVnXTtcbiAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goYW5zd2VyLCBhbnN3ZXJfdmFsdWVzKTtcblxuICAgICAgaWYgKCFvbmx5UmVsZXZhbnQgfHwgbWF0Y2gpIHtcbiAgICAgICAgaW5pdGlhbFZhbHVlc1tzdWJRdWVzdGlvblNsdWddID1cbiAgICAgICAgICBzdWJBbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShzdWJfcXVlc3Rpb24pO1xuICAgICAgfVxuXG4gICAgICBwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyKFxuICAgICAgICBzdWJfcXVlc3Rpb24sXG4gICAgICAgIGFuc3dlcnMsXG4gICAgICAgIHN1YkFuc3dlcixcbiAgICAgICAgaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgb25seVJlbGV2YW50XG4gICAgICApO1xuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VBbnN3ZXJzID0gKFxuICBvd25lcixcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGFuc3dlcnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGluY2x1ZGVEaXNjbGFpbWVyLFxuICBvbmx5UmVsZXZhbnQgPSBmYWxzZVxuKSA9PiB7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZXMgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdIHx8IG93bmVyLmVtYWlsIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSB8fCBvd25lci5maXJzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gfHwgb3duZXIubGFzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldIHx8IG93bmVyLmNvbXBhbnk7XG4gIH1cblxuICBpZiAoaW5jbHVkZURpc2NsYWltZXIpIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdIHx8XG4gICAgICBvd25lci5kaXNjbGFpbWVyX2FjY2VwdGVkO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIGNvbnN0IGFuc3dlciA9IGFuc3dlcnNbcXVlc3Rpb25TbHVnXTtcbiAgICBpbml0aWFsVmFsdWVzW3F1ZXN0aW9uU2x1Z10gPSBhbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShxKTtcblxuICAgIHBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIocSwgYW5zd2VycywgYW5zd2VyLCBpbml0aWFsVmFsdWVzLCBvbmx5UmVsZXZhbnQpO1xuICB9KTtcblxuICByZXR1cm4gaW5pdGlhbFZhbHVlcztcbn07XG5cbmNvbnN0IGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hID0gKHF1ZXN0aW9uU2x1ZywgcnVsZSwgc2NoZW1hKSA9PiB7XG4gIGNvbnN0IHN1YlF1ZXN0aW9uID0gcnVsZS5zdWJfcXVlc3Rpb247XG4gIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJRdWVzdGlvbi5uYW1lLCBzdWJRdWVzdGlvbi5pZCk7XG5cbiAgc2NoZW1hW3N1YlF1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihcbiAgICBzdWJRdWVzdGlvbi50eXBlLFxuICAgIHN1YlF1ZXN0aW9uLm5hbWUsXG4gICAgZmFsc2VcbiAgKVxuICAgIC5udWxsYWJsZSgpXG4gICAgLndoZW4ocXVlc3Rpb25TbHVnLCB7XG4gICAgICBpczogKHF1ZXN0aW9uQW5zKSA9PiB7XG4gICAgICAgIGNvbnN0IGFuc1ZhbHVlTWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChcbiAgICAgICAgICBxdWVzdGlvbkFucyxcbiAgICAgICAgICBydWxlLmFuc3dlcl92YWx1ZXNcbiAgICAgICAgKTtcbiAgICAgICAgLy8gY2hlY2sgaWYgcXVlc3Rpb24gaXMgdmlzaWJsZSB0byBhZGQgdmFsaWRhdGlvblxuICAgICAgICBjb25zdCBpc1Zpc2libGUgPSAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgIGAke3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gYW5zVmFsdWVNYXRjaCAmJiBpc1Zpc2libGU7XG4gICAgICB9LFxuICAgICAgdGhlbjogKHNjaCkgPT4ge1xuICAgICAgICBpZiAoc3ViUXVlc3Rpb24udHlwZSA9PT0gUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICAgICAgcmV0dXJuIHNjaC5taW4oMSkucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNjaC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBpZiAoc3ViUXVlc3Rpb24uc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgc3ViUXVlc3Rpb24uc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHN1YlJ1bGUpID0+IHtcbiAgICAgIGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hKHN1YlF1ZXN0aW9uU2x1Zywgc3ViUnVsZSwgc2NoZW1hKTtcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSA9IChcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGRpc2NsYWltZXJNYW5kYXRvcnlcbikgPT4ge1xuICBjb25zdCBzY2hlbWEgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAuZW1haWwoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPSB5dXAubGF6eSgodmFsdWUpID0+XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyB5dXBcbiAgICAgICAgICAgIC5vYmplY3QoKVxuICAgICAgICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICAgICAgICAgIC50eXBlRXJyb3IoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9maWVsZFwiKSlcbiAgICAgICAgOiB5dXAuc3RyaW5nKCkucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICk7XG4gIH1cblxuICBpZiAoZGlzY2xhaW1lck1hbmRhdG9yeSkge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID0geXVwXG4gICAgICAuYm9vbCgpXG4gICAgICAub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCB7IGlkLCBuYW1lLCB0eXBlLCBtYW5kYXRvcnksIHN1Yl9xdWVzdGlvbl9ydWxlcyB9ID0gcTtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcobmFtZSwgaWQpO1xuICAgIHNjaGVtYVtxdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24odHlwZSwgbmFtZSwgbWFuZGF0b3J5KTtcblxuICAgIGlmIChzdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hKHF1ZXN0aW9uU2x1ZywgcnVsZSwgc2NoZW1hKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHl1cC5vYmplY3Qoc2NoZW1hKTtcbn07XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY29weUljb25fX19sSTNlUVwiO1xudmFyIF8yID0gXCJyZXZlcnNlZF9fX3pKem1EXCI7XG52YXIgXzMgPSBcInRydW5jYXRlZF9fX2pXU25VXCI7XG52YXIgXzQgPSBcIndyYXBwZXJfX19tVlBpUlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJjb3B5SWNvblwiLCBfMiBhcyBcInJldmVyc2VkXCIsIF8zIGFzIFwidHJ1bmNhdGVkXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lX19fbXhFS1dcIjtcbnZhciBfMiA9IFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyX19fTzRzU3NcIjtcbnZhciBfMyA9IFwiY2FsZW5kYXJEaXNwbGF5X19fRjNudUtcIjtcbnZhciBfNCA9IFwiY2xlYW5CdXR0b25fX19xcUR2VVwiO1xudmFyIF81ID0gXCJjb250YWluZXJfX19RZVFZX1wiO1xudmFyIF82ID0gXCJkYXRlUGlja2VyQ29udGFpbmVyX19fWjQybXdcIjtcbnZhciBfNyA9IFwiZGF0ZXBpY2tlckNsb3NlX19fVFo3a0pcIjtcbnZhciBfOCA9IFwiZmlsdGVyQ2hlY2tib3hDb250YWluZXJfX19rVW5XOVwiO1xudmFyIF85ID0gXCJmaWx0ZXJDb250YWluZXJfX19ycnFwOVwiO1xudmFyIF9hID0gXCJmaWx0ZXJEYXRlTGFiZWxfX19KZ2Jjc1wiO1xudmFyIF9iID0gXCJmaWx0ZXJJY29uX19faWlPem9cIjtcbnZhciBfYyA9IFwiZmlsdGVyTGFiZWxfX19za1pQN1wiO1xudmFyIF9kID0gXCJmaWx0ZXJMaXN0Q29udGFpbmVyX19fSURybFNcIjtcbnZhciBfZSA9IFwiZmlsdGVyTnVtQWN0aXZlX19fa21FRUtcIjtcbnZhciBfZiA9IFwiZmlsdGVyU29ydENvbnRhaW5lcl9fX25oTkpzXCI7XG52YXIgXzEwID0gXCJsYWJlbF9fX0xBbWVfXCI7XG52YXIgXzExID0gXCJzaG93RmlsdGVyTGlzdF9fX0lXNHhHXCI7XG52YXIgXzEyID0gXCJzb3J0Q29udGFpbmVyX19fc2I1QmRcIjtcbnZhciBfMTMgPSBcInNvcnRJY29uX19fY19YWmlcIjtcbnZhciBfMTQgPSBcInNvcnRMYWJlbF9fX2RYaU15XCI7XG52YXIgXzE1ID0gXCJzb3J0TGlzdENvbnRhaW5lcl9fX1BwMlhnXCI7XG52YXIgXzE2ID0gXCJ0aXRsZVdyYXBwZXJfX19QNm1QdVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lXCIsIF8yIGFzIFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyXCIsIF8zIGFzIFwiY2FsZW5kYXJEaXNwbGF5XCIsIF80IGFzIFwiY2xlYW5CdXR0b25cIiwgXzUgYXMgXCJjb250YWluZXJcIiwgXzYgYXMgXCJkYXRlUGlja2VyQ29udGFpbmVyXCIsIF83IGFzIFwiZGF0ZXBpY2tlckNsb3NlXCIsIF84IGFzIFwiZmlsdGVyQ2hlY2tib3hDb250YWluZXJcIiwgXzkgYXMgXCJmaWx0ZXJDb250YWluZXJcIiwgX2EgYXMgXCJmaWx0ZXJEYXRlTGFiZWxcIiwgX2IgYXMgXCJmaWx0ZXJJY29uXCIsIF9jIGFzIFwiZmlsdGVyTGFiZWxcIiwgX2QgYXMgXCJmaWx0ZXJMaXN0Q29udGFpbmVyXCIsIF9lIGFzIFwiZmlsdGVyTnVtQWN0aXZlXCIsIF9mIGFzIFwiZmlsdGVyU29ydENvbnRhaW5lclwiLCBfMTAgYXMgXCJsYWJlbFwiLCBfMTEgYXMgXCJzaG93RmlsdGVyTGlzdFwiLCBfMTIgYXMgXCJzb3J0Q29udGFpbmVyXCIsIF8xMyBhcyBcInNvcnRJY29uXCIsIF8xNCBhcyBcInNvcnRMYWJlbFwiLCBfMTUgYXMgXCJzb3J0TGlzdENvbnRhaW5lclwiLCBfMTYgYXMgXCJ0aXRsZVdyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY2FuY2VsQnRuX19fcURleGhcIjtcbnZhciBfMiA9IFwiZm9vdGVyX19fU043MHlcIjtcbnZhciBfMyA9IFwic2F2ZUJ0bl9fX25iVTZjXCI7XG5leHBvcnQgeyBfMSBhcyBcImNhbmNlbEJ0blwiLCBfMiBhcyBcImZvb3RlclwiLCBfMyBhcyBcInNhdmVCdG5cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiZXJyb3JMYWJlbF9fX25vY3lYXCI7XG5leHBvcnQgeyBfMSBhcyBcImVycm9yTGFiZWxcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwibXlPcmRlcnNXcmFwcGVyX19fSEpteXNcIjtcbnZhciBfMiA9IFwibm9PcmRlcnNGb3VuZF9fX0RSd2dvXCI7XG52YXIgXzMgPSBcIm5vT3JkZXJzSWNvbldyYXBwZXJfX190UFRtWVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJteU9yZGVyc1dyYXBwZXJcIiwgXzIgYXMgXCJub09yZGVyc0ZvdW5kXCIsIF8zIGFzIFwibm9PcmRlcnNJY29uV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJvcmRlckRldGFpbHNNbW91bnRfX19yM2tSQVwiO1xudmFyIF8yID0gXCJvcmRlckRldGFpbHNUaWNrZXRzX19fbTRJaktcIjtcbnZhciBfMyA9IFwib3JkZXJTdW1tYXJ5QnV0dG9uX19fdXhqaHRcIjtcbnZhciBfNCA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb19fX19SQlhFXCI7XG52YXIgXzUgPSBcIm9yZGVyU3VtbWFyeVRhYmxlX19fWURueFZcIjtcbnZhciBfNiA9IFwib3JkZXJTdW1tYXJ5V3JhcHBlcl9fX1J3SUVSXCI7XG52YXIgXzcgPSBcInJlZnVuZERpc2FibGVkX19fanZyazNcIjtcbmV4cG9ydCB7IF8xIGFzIFwib3JkZXJEZXRhaWxzTW1vdW50XCIsIF8yIGFzIFwib3JkZXJEZXRhaWxzVGlja2V0c1wiLCBfMyBhcyBcIm9yZGVyU3VtbWFyeUJ1dHRvblwiLCBfNCBhcyBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9cIiwgXzUgYXMgXCJvcmRlclN1bW1hcnlUYWJsZVwiLCBfNiBhcyBcIm9yZGVyU3VtbWFyeVdyYXBwZXJcIiwgXzcgYXMgXCJyZWZ1bmREaXNhYmxlZFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25UaWNrZXRCdXR0b25fX196ekxzY1wiO1xudmFyIF8yID0gXCJhc3NpZ25Ub01lVGV4dF9fX1pQYWV4XCI7XG52YXIgXzMgPSBcImFzc2lnbmVkQnlUZXh0X19fYk5aN3pcIjtcbnZhciBfNCA9IFwiYXNzaWduZWRUb01lRGVzX19fR2pGa1ZcIjtcbnZhciBfNSA9IFwiYXNzaWduZWRUb01lV3JhcHBlcl9fX1V4YzJ5XCI7XG52YXIgXzYgPSBcImJhZGdlRmVhdHVyZV9fX0EyTE1WXCI7XG52YXIgXzcgPSBcImJhZGdlRmVhdHVyZVdyYXBwZXJfX19JUUxOUFwiO1xudmFyIF84ID0gXCJjaGVja2JveF9fX1haSnBiXCI7XG52YXIgXzkgPSBcImRpc2FibGVkUmVmdW5kX19fU2ZmbDdcIjtcbnZhciBfYSA9IFwiZGlzcGxheV9ub25lX19fQ3FwTDNcIjtcbnZhciBfYiA9IFwibGFiZWxfX196WERXelwiO1xudmFyIF9jID0gXCJub09yZGVyc0ljb25XcmFwcGVyX19fZWZ5cnBcIjtcbnZhciBfZCA9IFwibm9UaWNrZXRzRm91bmRfX19qTG9jb1wiO1xudmFyIF9lID0gXCJvcmRlclRpY2tldENvbnRhaW5lcl9fX1pKTHprXCI7XG52YXIgX2YgPSBcIm9yZGVyVGlja2V0SW5mb19fX2dlbXFCXCI7XG52YXIgXzEwID0gXCJvcmRlclRpY2tldEluZm9Db250YWluZXJfX19fcDY2VlwiO1xudmFyIF8xMSA9IFwib3JkZXJXcmFwcGVyX19feURCQW9cIjtcbnZhciBfMTIgPSBcInJlYXNzaWduQnV0dG9uX19fUm9qTTVcIjtcbnZhciBfMTMgPSBcInJlZnVuZEJ1dHRvbnNfX19qRGw0SFwiO1xudmFyIF8xNCA9IFwicmVmdW5kTW9kYWxfX19FcWdQRlwiO1xudmFyIF8xNSA9IFwic2VsZWN0ZWRfX19IV0dOY1wiO1xudmFyIF8xNiA9IFwidGFiQnV0dG9uc19fX3hUeUpBXCI7XG52YXIgXzE3ID0gXCJ0aWNrZXRBY3Rpb25CdXR0b25zX19fcnBTTVFcIjtcbnZhciBfMTggPSBcInRpY2tldExpc3RDb250YWluZXJfX19jZm1yclwiO1xudmFyIF8xOSA9IFwidGlja2V0Tm9fX19hMmlNOVwiO1xudmFyIF8xYSA9IFwidGlja2V0T3duZXJFbWFpbF9fX1p0NE9FXCI7XG52YXIgXzFiID0gXCJ0aWNrZXRUaWNrZXRUeXBlX19fWnFfZjBcIjtcbnZhciBfMWMgPSBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25fX19IRjZJbVwiO1xudmFyIF8xZCA9IFwidmlld01vcmVCdXR0b25fX19LXzF6VFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhc3NpZ25UaWNrZXRCdXR0b25cIiwgXzIgYXMgXCJhc3NpZ25Ub01lVGV4dFwiLCBfMyBhcyBcImFzc2lnbmVkQnlUZXh0XCIsIF80IGFzIFwiYXNzaWduZWRUb01lRGVzXCIsIF81IGFzIFwiYXNzaWduZWRUb01lV3JhcHBlclwiLCBfNiBhcyBcImJhZGdlRmVhdHVyZVwiLCBfNyBhcyBcImJhZGdlRmVhdHVyZVdyYXBwZXJcIiwgXzggYXMgXCJjaGVja2JveFwiLCBfOSBhcyBcImRpc2FibGVkUmVmdW5kXCIsIF9hIGFzIFwiZGlzcGxheV9ub25lXCIsIF9iIGFzIFwibGFiZWxcIiwgX2MgYXMgXCJub09yZGVyc0ljb25XcmFwcGVyXCIsIF9kIGFzIFwibm9UaWNrZXRzRm91bmRcIiwgX2UgYXMgXCJvcmRlclRpY2tldENvbnRhaW5lclwiLCBfZiBhcyBcIm9yZGVyVGlja2V0SW5mb1wiLCBfMTAgYXMgXCJvcmRlclRpY2tldEluZm9Db250YWluZXJcIiwgXzExIGFzIFwib3JkZXJXcmFwcGVyXCIsIF8xMiBhcyBcInJlYXNzaWduQnV0dG9uXCIsIF8xMyBhcyBcInJlZnVuZEJ1dHRvbnNcIiwgXzE0IGFzIFwicmVmdW5kTW9kYWxcIiwgXzE1IGFzIFwic2VsZWN0ZWRcIiwgXzE2IGFzIFwidGFiQnV0dG9uc1wiLCBfMTcgYXMgXCJ0aWNrZXRBY3Rpb25CdXR0b25zXCIsIF8xOCBhcyBcInRpY2tldExpc3RDb250YWluZXJcIiwgXzE5IGFzIFwidGlja2V0Tm9cIiwgXzFhIGFzIFwidGlja2V0T3duZXJFbWFpbFwiLCBfMWIgYXMgXCJ0aWNrZXRUaWNrZXRUeXBlXCIsIF8xYyBhcyBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25cIiwgXzFkIGFzIFwidmlld01vcmVCdXR0b25cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiQ1RBQnV0dG9uV3JhcHBlcl9fX0tncTZnXCI7XG52YXIgXzIgPSBcImFjdGlvbkJ1dHRvbnNfX191N21QU1wiO1xudmFyIF8zID0gXCJhcHByb3ZlZF9fX3N4RUpXXCI7XG52YXIgXzQgPSBcImJhZGdlRmVhdHVyZV9fX3RMaEVwXCI7XG52YXIgXzUgPSBcImJhZGdlRmVhdHVyZVdyYXBwZXJfX19fOUdiRFwiO1xudmFyIF82ID0gXCJidXR0b25QaWxsX19fTGVzYXpcIjtcbnZhciBfNyA9IFwiY2FuY2VsQnV0dG9uX19feWZoWWJcIjtcbnZhciBfOCA9IFwiY29udGludWVCdXR0b25fX19OeVgzc1wiO1xudmFyIF85ID0gXCJkZWxldGVJY29uX19fRlN3eWVcIjtcbnZhciBfYSA9IFwicGVuZGluZ19fX2FFYld3XCI7XG52YXIgX2IgPSBcInJlZnVuZERldGFpbF9fX2NRMjhWXCI7XG52YXIgX2MgPSBcInJlZnVuZEVycm9yTXNnX19fQWFoenJcIjtcbnZhciBfZCA9IFwicmVmdW5kU3VjY2Vzc2Z1bF9fX3pyRFFZXCI7XG52YXIgX2UgPSBcInJlZnVuZFRleHRfX19hRW5MOVwiO1xudmFyIF9mID0gXCJyZWZ1bmRUaWNrZXRBdHRlbmRlZV9fX1FYQ2pNXCI7XG52YXIgXzEwID0gXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJfX195YTYxM1wiO1xudmFyIF8xMSA9IFwicmVqZWN0ZWRfX19OSkU0WlwiO1xudmFyIF8xMiA9IFwic3VidGl0bGVfX19QdERlMlwiO1xudmFyIF8xMyA9IFwic3VjY2Vzc01zZ19fX0h0TXNlXCI7XG52YXIgXzE0ID0gXCJzdWNjZXNzTXNnMl9fX1E2em5hXCI7XG52YXIgXzE1ID0gXCJ0aWNrZXRMaXN0X19fZURRUjNcIjtcbnZhciBfMTYgPSBcInRpY2tldE5vX19fX0VBRDRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiQ1RBQnV0dG9uV3JhcHBlclwiLCBfMiBhcyBcImFjdGlvbkJ1dHRvbnNcIiwgXzMgYXMgXCJhcHByb3ZlZFwiLCBfNCBhcyBcImJhZGdlRmVhdHVyZVwiLCBfNSBhcyBcImJhZGdlRmVhdHVyZVdyYXBwZXJcIiwgXzYgYXMgXCJidXR0b25QaWxsXCIsIF83IGFzIFwiY2FuY2VsQnV0dG9uXCIsIF84IGFzIFwiY29udGludWVCdXR0b25cIiwgXzkgYXMgXCJkZWxldGVJY29uXCIsIF9hIGFzIFwicGVuZGluZ1wiLCBfYiBhcyBcInJlZnVuZERldGFpbFwiLCBfYyBhcyBcInJlZnVuZEVycm9yTXNnXCIsIF9kIGFzIFwicmVmdW5kU3VjY2Vzc2Z1bFwiLCBfZSBhcyBcInJlZnVuZFRleHRcIiwgX2YgYXMgXCJyZWZ1bmRUaWNrZXRBdHRlbmRlZVwiLCBfMTAgYXMgXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJcIiwgXzExIGFzIFwicmVqZWN0ZWRcIiwgXzEyIGFzIFwic3VidGl0bGVcIiwgXzEzIGFzIFwic3VjY2Vzc01zZ1wiLCBfMTQgYXMgXCJzdWNjZXNzTXNnMlwiLCBfMTUgYXMgXCJ0aWNrZXRMaXN0XCIsIF8xNiBhcyBcInRpY2tldE5vXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNsb3NlQnRuX19feVNRQ09cIjtcbnZhciBfMiA9IFwiaGVhZGVyX19fZkJYRzlcIjtcbnZhciBfMyA9IFwidGl0bGVfX190eVplUVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fUk9KR3NcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2xvc2VCdG5cIiwgXzIgYXMgXCJoZWFkZXJcIiwgXzMgYXMgXCJ0aXRsZVwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwic3VtbWl0VGl0bGVEYXRlX19fWG5ycEZcIjtcbnZhciBfMiA9IFwid2lkZ2V0SGVhZGVyX19fZ2dMdE1cIjtcbmV4cG9ydCB7IF8xIGFzIFwic3VtbWl0VGl0bGVEYXRlXCIsIF8yIGFzIFwid2lkZ2V0SGVhZGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImhlYWRlck5vdGVfX19BZTVFQVwiO1xudmFyIF8yID0gXCJvcmRlck5vX19fVk9QUndcIjtcbnZhciBfMyA9IFwicHVyY2hhc2VkQnlfX19NTmlIVFwiO1xudmFyIF80ID0gXCJwdXJjaGFzZWRCeVdyYXBwZXJfX19EaDZIVVwiO1xudmFyIF81ID0gXCJ3cmFwcGVyX19fbVZ1aVpcIjtcbmV4cG9ydCB7IF8xIGFzIFwiaGVhZGVyTm90ZVwiLCBfMiBhcyBcIm9yZGVyTm9cIiwgXzMgYXMgXCJwdXJjaGFzZWRCeVwiLCBfNCBhcyBcInB1cmNoYXNlZEJ5V3JhcHBlclwiLCBfNSBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYXNzaWduT3B0aW9uc1dyYXBwZXJfX19vakZfN1wiO1xudmFyIF8yID0gXCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lcl9fX2dPdGFKXCI7XG5leHBvcnQgeyBfMSBhcyBcImFzc2lnbk9wdGlvbnNXcmFwcGVyXCIsIF8yIGFzIFwidGlja2V0UmVhc3NpZ25Db250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwid3JhcHBlcl9fX0V3T1J6XCI7XG5leHBvcnQgeyBfMSBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiaW5mb05vdGVfX19pMVhZOVwiO1xudmFyIF8yID0gXCJ3cmFwcGVyX19fTUF1TlNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiaW5mb05vdGVcIiwgXzIgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJfX19BdXZyblwiO1xudmFyIF8yID0gXCJhZGRpdGlvbmFsRGV0YWlsc19fX21QMWlKXCI7XG52YXIgXzMgPSBcImF0dGVuZGVlQ29udGFpbmVyX19fUTBWVXpcIjtcbnZhciBfNCA9IFwiYXR0ZW5kZWVJbmZvVGl0bGVfX19MbXJtNFwiO1xudmFyIF81ID0gXCJjbG9zZUJ0bl9fX1dOSmxFXCI7XG52YXIgXzYgPSBcImNvcHlCdG5fX19fdXRBNlwiO1xudmFyIF83ID0gXCJkZWxlZ2F0ZWRUb19fX1NHVlFJXCI7XG52YXIgXzggPSBcImRvd25sb2FkQnRuX19fcWpZaHpcIjtcbnZhciBfOSA9IFwiaGVhZGVyX19fQXVnbnpcIjtcbnZhciBfYSA9IFwib3JkZXJOdW1iZXJfX19MNVE1YVwiO1xudmFyIF9iID0gXCJxckNvZGVfX19md3FacVwiO1xudmFyIF9jID0gXCJxck5vdGVfX19HYzdLblwiO1xudmFyIF9kID0gXCJzZW5kQnRuX19fa29XTTJcIjtcbnZhciBfZSA9IFwic2VudF9fX2s2V0t4XCI7XG52YXIgX2YgPSBcInN0YXR1c19fX2t3Qzh5XCI7XG52YXIgXzEwID0gXCJzdWJ0aXRsZV9fX3lfTnVPXCI7XG52YXIgXzExID0gXCJ0aWNrZXREZXRhaWxDb250YWluZXJfX19iMlRMUlwiO1xudmFyIF8xMiA9IFwidGl0bGVfX193UXpVTlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyXCIsIF8yIGFzIFwiYWRkaXRpb25hbERldGFpbHNcIiwgXzMgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfNCBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF81IGFzIFwiY2xvc2VCdG5cIiwgXzYgYXMgXCJjb3B5QnRuXCIsIF83IGFzIFwiZGVsZWdhdGVkVG9cIiwgXzggYXMgXCJkb3dubG9hZEJ0blwiLCBfOSBhcyBcImhlYWRlclwiLCBfYSBhcyBcIm9yZGVyTnVtYmVyXCIsIF9iIGFzIFwicXJDb2RlXCIsIF9jIGFzIFwicXJOb3RlXCIsIF9kIGFzIFwic2VuZEJ0blwiLCBfZSBhcyBcInNlbnRcIiwgX2YgYXMgXCJzdGF0dXNcIiwgXzEwIGFzIFwic3VidGl0bGVcIiwgXzExIGFzIFwidGlja2V0RGV0YWlsQ29udGFpbmVyXCIsIF8xMiBhcyBcInRpdGxlXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJ1dHRvbkNhbmNlbGxlZF9fX0VybERaXCI7XG52YXIgXzIgPSBcImJ1dHRvbkNvbXBsZXRlX19fbGxXa1pcIjtcbnZhciBfMyA9IFwiYnV0dG9uSW5jb21wbGV0ZV9fX1RvbEhnXCI7XG52YXIgXzQgPSBcImJ1dHRvblBpbGxfX196cTJ0Y1wiO1xudmFyIF81ID0gXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRfX19wV3QzMFwiO1xudmFyIF82ID0gXCJidXR0b25VbmFzc2lnbmVkX19fWURkOFhcIjtcbnZhciBfNyA9IFwidGlja2V0U3RhdHVzQ29udGFpbmVyX19fcWo2ZmJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYnV0dG9uQ2FuY2VsbGVkXCIsIF8yIGFzIFwiYnV0dG9uQ29tcGxldGVcIiwgXzMgYXMgXCJidXR0b25JbmNvbXBsZXRlXCIsIF80IGFzIFwiYnV0dG9uUGlsbFwiLCBfNSBhcyBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZFwiLCBfNiBhcyBcImJ1dHRvblVuYXNzaWduZWRcIiwgXzcgYXMgXCJ0aWNrZXRTdGF0dXNDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aXZlX19fdEx5V1pcIjtcbnZhciBfMiA9IFwidGFiT3B0aW9uX19fSDRIMXVcIjtcbnZhciBfMyA9IFwidGFiV3JhcHBlcl9fX3UyMXNHXCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGl2ZVwiLCBfMiBhcyBcInRhYk9wdGlvblwiLCBfMyBhcyBcInRhYldyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwidGlja2V0c1RpdGxlVGV4dF9fX1REUG1wXCI7XG5leHBvcnQgeyBfMSBhcyBcInRpY2tldHNUaXRsZVRleHRcIiB9XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9TdGFja1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYlwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaWR0b2tlbi12ZXJpZmllclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb21lbnQtdGltZXpvbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicC1saW1pdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1xci1jb2RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInl1cFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VJbml0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZVwiO1xuaW1wb3J0IHsgUkVTRVRfU1RBVEUsIHNldFJlZHVjZXJTdGF0ZSB9IGZyb20gXCIuL2FjdGlvbnNcIjtcblxuaW1wb3J0IFdpZGdldFdyYXBwZXIgZnJvbSBcIi4vY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyXCI7XG5cbmNvbnN0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIGFwaUJhc2VVcmwsXG4gICAgdXNlcixcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8V2lkZ2V0V3JhcHBlciAvPlxuICAgICAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICAgICAgPC9QZXJzaXN0R2F0ZT5cbiAgICA8L1Byb3ZpZGVyPlxuICApO1xufTtcblxuTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQucHJvcFR5cGVzID0ge1xuICBsb2dpblVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VwcG9ydEVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFwaUJhc2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVzZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNsaWVudElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1cGRhdGVQcm9maWxlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQ7XG4iXSwibmFtZXMiOlsiYXV0aEVycm9ySGFuZGxlciIsImNyZWF0ZUFjdGlvbiIsImRlbGV0ZVJlcXVlc3QiLCJnZXRSZXF1ZXN0IiwicHV0UmVxdWVzdCIsInN0YXJ0TG9hZGluZyIsInN0b3BMb2FkaW5nIiwicExpbWl0IiwiZ2V0SWRUb2tlbiIsIm9iamVjdFRvUXVlcnlTdHJpbmciLCJJZFRva2VuVmVyaWZpZXIiLCJpMThuIiwiZ2V0QWNjZXNzVG9rZW5TYWZlbHkiLCJERUZBVUxUX0lURU1TX1BFUl9QQUdFIiwiRVJST1JfQ09ERVMiLCJGSUZUWV9QRVJfUEFHRSIsIkZJUlNUX1BBR0UiLCJQUk9NSVNFX0JBVENIX0xJTUlUIiwiVEFCUyIsIlJFU0VUX1NUQVRFIiwiUkVTRVRfRklMVEVSIiwiUkVTRVRfQVBJX0VSUk9SIiwiU0VUX1NUQVRFIiwiU0VUX0FQSV9FUlJPUiIsIkNIQU5HRV9GSUxURVIiLCJDSEFOR0VfU09SVCIsIkdFVF9VU0VSX09SREVSUyIsIlJFRlVORF9PUkRFUiIsIlNFVF9BQ1RJVkVfT1JERVJfSUQiLCJGSUxURVJfVVNFUl9PUkRFUlMiLCJHRVRfTVlfQVNTSUdORURfVElDS0VUUyIsIlVQREFURV9USUNLRVQiLCJSRVNFVF9USUNLRVQiLCJSRUNFSVZFX1RJQ0tFVCIsIlJFTU9WRV9USUNLRVRfQVRURU5ERUUiLCJBU1NJR05fVElDS0VUIiwiREVMRUdBVEVfVElDS0VUIiwiUkVGVU5EX1RJQ0tFVCIsIlJFU0VORF9OT1RJRklDQVRJT04iLCJHRVRfVElDS0VUU19CWV9PUkRFUiIsIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SIiwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTIiwiR0VUX1RJQ0tFVF9ERVRBSUxTIiwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMiLCJUSUNLRVRfQVRURU5ERUVfS0VZUyIsImVtYWlsIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55IiwiZGlzY2xhaW1lckFjY2VwdGVkIiwiZXh0cmFRdWVzdGlvbnMiLCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEIiwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSIsIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRSIsIlVQREFURV9JRFBfUFJPRklMRSIsIlNFVF9VU0VSIiwiU0VUX1NVTU1JVCIsIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyIsIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTIiwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTIiwicmVzZXRUaWNrZXQiLCJkaXNwYXRjaCIsInJlc2V0U3RhdGUiLCJyZXNldEZpbHRlciIsInJlc2V0RXJyb3IiLCJzZXRSZWR1Y2VyU3RhdGUiLCJzdW1taXQiLCJ1c2VyIiwiRklMVEVSX1ZBUl9EQVRFIiwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFIiwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRSIsIkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEIiwiRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMiLCJGSUxURVJfVkFSX1BST01PQ09ERSIsIkZJTFRFUl9WQVJfRlJFRV9QQUlEIiwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIiLCJjaGFuZ2VGaWx0ZXIiLCJmaWx0ZXIiLCJjaGFuZ2VTb3J0Iiwic29ydCIsInBhcnNlRmlsdGVyIiwiZmlsdGVyT2JqIiwiY3VycmVudFRhYiIsInB1c2giLCJjb25jYXQiLCJsb3dlciIsInVwcGVyIiwibGVuZ3RoIiwiZmlsdGVyTmFtZSIsIk9SREVSUyIsImpvaW4iLCJnZXRTb3J0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIiwiZXJyb3JIYW5kbGVyTm90aWZ5IiwicGF5bG9hZCIsImNhbGxiYWNrIiwiY3VzdG9tQXV0aEVycm9ySGFuZGxlciIsImVyciIsInJlcyIsImN1c3RvbUZldGNoRXJyb3JIYW5kbGVyIiwicmVzcG9uc2UiLCJjb2RlIiwic3RhdHVzIiwibXNnIiwidCIsIk9iamVjdCIsImVudHJpZXMiLCJlcnJvcnMiLCJmb3JFYWNoIiwiX3JlZiIsImtleSIsInZhbHVlIiwiTnVtYmVyIiwiaXNOYU4iLCJzdGF0dXNUZXh0IiwidGl0bGUiLCJodG1sIiwiZ2V0VXNlck9yZGVycyIsIl9yZWYyIiwicGFnZSIsInBlclBhZ2UiLCJnZXRTdGF0ZSIsIl9yZWYzIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwiYWNjZXNzVG9rZW4iLCJjYXRjaCIsIlByb21pc2UiLCJyZWplY3QiLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsInBlcl9wYWdlIiwia2V5cyIsImZpbHRlcnMiLCJuYW1lIiwiaWQiLCJ0aGVuIiwiZSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjQiLCJfcmVmNSIsInVzZXJQcm9maWxlIiwiZmllbGRzIiwiZXhwYW5kIiwiVElDS0VUUyIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjYiLCJfcmVmNyIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY4IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjkiLCJfcmVmMTAiLCJyZWZ1bmRCdWxrVGlja2V0cyIsIl9yZWYxMSIsInRpY2tldHMiLCJsaW1pdCIsImFsbFJlZnVuZFRpY2tldENhbGxzIiwibWFwIiwiYWxsIiwic3VjY2Vzc2Z1bGx5UmVxdWVzdGVkIiwiciIsIl9yJHJlc3BvbnNlIiwicmVmdW5kX3JlcXVlc3RzIiwidXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJnZXRFeHRyYVF1ZXN0aW9ucyIsImF0dGVuZGVlSWQiLCJfcmVmMTIiLCJlbmRwb2ludCIsImdldFRpY2tldCIsInRpY2tldElkIiwiX3JlZjEzIiwiZmluYWxseSIsIm5vcm1hbGl6ZVRpY2tldCIsImVudGl0eSIsIm5vcm1hbGl6ZWRFbnRpdHkiLCJfb2JqZWN0U3ByZWFkIiwiYXR0ZW5kZWVfY29tcGFueSIsImF0dGVuZGVlX2NvbXBhbnlfaWQiLCJyZWZyZXNoUHJvZmlsZSIsImRhdGEiLCJ0aWNrZXRPd25lciIsIl9yZWYxNCIsIl90aWNrZXRPd25lciRtYW5hZ2VyIiwidXBkYXRlUHJvZmlsZSIsImF0dGVuZGVlX2VtYWlsIiwiYXR0ZW5kZWVfZmlyc3RfbmFtZSIsImF0dGVuZGVlX2xhc3RfbmFtZSIsImhhc01hbmFnZXIiLCJtYW5hZ2VyIiwibWFuYWdlcl9pZCIsIml0c01lIiwicHJvZmlsZUNoYW5nZWQiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwibmV3UHJvZmlsZSIsInNhdmVUaWNrZXREZXRhaWxzIiwiYW5zd2VycyIsIl9yZWYxNSIsImlkVG9rZW4iLCJ2ZXJpZmllciIsImp3dCIsImRlY29kZSIsImNvbnNvbGUiLCJsb2ciLCJvd25lciIsImFzc2lnbkF0dGVuZGVlIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX3JlZjE2IiwicmVhc3NpZ25UaWNrZXQiLCJfcmVmMTciLCJkZWxlZ2F0ZVRpY2tldCIsIl9yZWYxOCIsInNhdmVFeHRyYVF1ZXN0aW9ucyIsIl9yZWYxOSIsImdldFRpY2tldFBERiIsIl9yZWYyMCIsInF1ZXJ5U3RyaW5nIiwiYXBpVXJsIiwiZmV0Y2giLCJyZXNwb25zZVR5cGUiLCJoZWFkZXJzIiwib2siLCJibG9iIiwicGRmIiwibGluayIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInVybCIsIndpbmRvdyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImhyZWYiLCJkb3dubG9hZCIsImRpc3BhdGNoRXZlbnQiLCJNb3VzZUV2ZW50IiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJ1c2VUcmFuc2xhdGlvbiIsIkJveCIsInVzZUZvcm1payIsIkV4dHJhUXVlc3Rpb25zRmllbGRzIiwiRm9ybUZvb3RlciIsInVzZVNjcm9sbFRvRXJyb3IiLCJSZWdpc3RyYXRpb25EaXNjbGFpbWVyIiwiYnVpbGRWYWxpZGF0aW9uU2NoZW1hIiwicGFyc2VBbnN3ZXJzIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkFzc2lnbkVRRm9ybSIsIm9uU3VibWl0Iiwib25DbG9zZSIsImZvcm1payIsImluaXRpYWxWYWx1ZXMiLCJ2YWxpZGF0aW9uU2NoZW1hIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5IiwidmFsdWVzIiwicmVsZXZhbnRBbnN3ZXJzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiaGFuZGxlU3VibWl0Iiwibm9WYWxpZGF0ZSIsImNoaWxkcmVuIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCIsImRpc2NsYWltZXIiLCJpc1JlcXVpcmVkIiwic2F2ZUxhYmVsIiwiY2FuY2VsTGFiZWwiLCJkaXNhYmxlZCIsImlzU3VibWl0dGluZyIsInByb3BUeXBlcyIsIm9iamVjdCIsImFycmF5IiwiZnVuYyIsIkNvbnRlbnRDb3B5SWNvbiIsIlRvb2x0aXAiLCJNSUxMSVNFQ19UT19TRUMiLCJzdHlsZXMiLCJkZWZhdWx0V2lkdGgiLCJDb3B5VGV4dCIsInRleHQiLCJ0b29sdGlwVGV4dCIsImhpZGVDb3B5IiwidHJ1bmNhdGVkIiwicmV2ZXJzZWQiLCJ3aWR0aCIsInRvb2x0aXBUZXh0VG9Vc2UiLCJ0b29sdGlwIiwic2V0VG9vbHRpcCIsInVzZVN0YXRlIiwiY2xhc3NOYW1lcyIsImhhbmRsZUNvcHkiLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJzZXRUaW1lb3V0IiwiY2xhc3NOYW1lIiwid3JhcHBlciIsInN0eWxlIiwiY29weUljb24iLCJvbkNsaWNrIiwic3RyaW5nIiwiYm9vbCIsIm51bWJlciIsImNyZWF0ZUNvbnRleHQiLCJkZWZhdWx0Q29udGV4dFZhbHVlIiwic2V0TWVzc2FnZSIsInNldE1lc3NhZ2VDYWxsYmFjayIsIkN1c3RvbURpYWxvZ0NvbnRleHQiLCJEaWFsb2ciLCJEaWFsb2dDb250ZW50IiwiRGlhbG9nQ29udGVudFRleHQiLCJEaWFsb2dUaXRsZSIsIkN1c3RvbURpYWxvZyIsIm9wZW4iLCJib2R5IiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJUaGVtZVByb3ZpZGVyIiwiY3JlYXRlVGhlbWUiLCJkYXJrQ29sb3IiLCJyb290IiwiZG9jdW1lbnRFbGVtZW50IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImdldFByb3BlcnR5VmFsdWUiLCJ0aGVtZSIsInBhbGV0dGUiLCJwcmltYXJ5IiwibWFpbiIsInNlY29uZGFyeSIsInR5cG9ncmFwaHkiLCJib2R5MSIsImZvbnRTaXplIiwiaDUiLCJmb250V2VpZ2h0IiwibWFyZ2luQm90dG9tIiwiaDYiLCJjb21wb25lbnRzIiwiTXVpRm9ybUhlbHBlclRleHQiLCJzdHlsZU92ZXJyaWRlcyIsIk11aUJ1dHRvbiIsImxpbmVIZWlnaHQiLCJNdWlUYWIiLCJjb2xvciIsIk11aVRhYnMiLCJpbmRpY2F0b3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJDdXN0b21UaGVtZSIsIm5vZGUiLCJDaGVja2JveCIsIkZvcm1Db250cm9sIiwiRm9ybUNvbnRyb2xMYWJlbCIsIkZvcm1Hcm91cCIsIkZvcm1IZWxwZXJUZXh0IiwiRm9ybUxhYmVsIiwiZ2V0TGFiZWwiLCJ0b1NsdWciLCJDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIiwiX3F1ZXN0aW9uJHZhbHVlcyIsInF1ZXN0aW9uIiwicXVlc3Rpb25DbGFzc05hbWUiLCJpc0Rpc2FibGVkIiwib25DaGFuZ2UiLCJzZXRGaWVsZFZhbHVlIiwiZXJyb3IiLCJoZWxwZXJUZXh0IiwicmVzdCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsInF1ZXN0aW9uU2x1ZyIsInF1ZXN0aW9uTGFiZWwiLCJtYW5kYXRvcnkiLCJxdWVzdGlvbk1heFZhbHVlcyIsIm1heF9zZWxlY3RlZF92YWx1ZXMiLCJxdWVzdGlvbk9wdGlvbnMiLCJ2YWwiLCJsYWJlbCIsInRvU3RyaW5nIiwiaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlIiwiY2hlY2tlZCIsImN1cnJlbnRBbnMiLCJtYXhTZWxlY3Rpb25SZWFjaGVkIiwibmV3VmFsdWUiLCJ2IiwicmVxdWlyZWQiLCJmdWxsV2lkdGgiLCJtYXJnaW4iLCJvcCIsImNvbnRyb2wiLCJpbmNsdWRlcyIsImV2IiwidGFyZ2V0IiwiUmF3SFRNTCIsIkNoZWNrYm94UXVlc3Rpb25GaWVsZCIsInN4IiwiYWxpZ25JdGVtcyIsIm1hcmdpblRvcCIsIklucHV0TGFiZWwiLCJNZW51SXRlbSIsIlNlbGVjdCIsIkRyb3Bkb3duUXVlc3Rpb25GaWVsZCIsImxhYmVsSWQiLCJSYWRpbyIsIlJhZGlvR3JvdXAiLCJSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIiwiVGV4dEZpZWxkIiwiVGV4dFF1ZXN0aW9uRmllbGQiLCJRdWVzdGlvblR5cGVfQ2hlY2tib3giLCJRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0IiwiUXVlc3Rpb25UeXBlX0NvbWJvQm94IiwiUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QiLCJjaGVja1J1bGUiLCJydWxlIiwiYW5zd2VyX3ZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImFuc3dlcl92YWx1ZXNfb3BlcmF0b3IiLCJjaGVja1Zpc2liaWxpdHkiLCJydWxlUmVzdWx0IiwidmlzaWJpbGl0eSIsInZpc2liaWxpdHlfY29uZGl0aW9uIiwicXVlc3Rpb25JZCIsInRleHRMQyIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsInEiLCJfcSRsYWJlbCIsImlzQW5zd2VyZWQiLCJhbnN3ZXIiLCJjaGVja0lmVmFsdWVNYXRjaCIsImNvbXBhcmVWYWwiLCJhbnN3ZXJBcnJheSIsInNvbWUiLCJnZXRUeXBlSW5pdGlhbFZhbHVlIiwidHlwZSIsImdldFR5cGVWYWx1ZSIsImFucyIsInNwbGl0IiwidHJhbnNmb3JtQW53ZXJzRm9ybWF0IiwiZGlzY2xhaW1lcl9hY2NlcHRlZCIsImV4dHJhX3F1ZXN0aW9ucyIsImZvcm1hdHRlZEVRIiwicXVlc3Rpb25faWQiLCJwYXJzZUludCIsInBvcCIsIlF1ZXN0aW9uVHlwZV9UZXh0IiwiUXVlc3Rpb25UeXBlX1RleHRBcmVhIiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uIiwiZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudCIsInF1ZXN0aW9uVHlwZSIsIkZyYWdtZW50IiwicmVhZE9ubHkiLCJhbGxvd0VkaXQiLCJyZW5kZXJSdWxlIiwiaXNWaXNpYmxlIiwicmVuZGVyUXVlc3Rpb24iLCJzdWJfcXVlc3Rpb24iLCJfcSRzdWJfcXVlc3Rpb25fcnVsZXMiLCJRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwiZm9ybWlrUHJvcHMiLCJoYW5kbGVDaGFuZ2UiLCJvbkJsdXIiLCJoYW5kbGVCbHVyIiwidG91Y2hlZCIsIkJvb2xlYW4iLCJzdWJfcXVlc3Rpb25fcnVsZXMiLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkNhcmRIZWFkZXIiLCJJY29uQnV0dG9uIiwiQ29sbGFwc2UiLCJDYXJkQ29udGVudCIsIkV4cGFuZE1vcmVJY29uIiwiQXNzaWduZWRGaWx0ZXIiLCJvbkZpbHRlciIsImZpbHRlclZhbHVlcyIsInN0YXRlIiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJhc3NpZ25lZFZhbHVlcyIsImhhbmRsZUZpbHRlckNoYW5nZSIsIm5ld0ZpbHRlciIsInRpdGxlV3JhcHBlciIsImFjdGlvbiIsImRpc2FibGVSaXBwbGUiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2l0aW9uIiwiaW4iLCJ0aW1lb3V0IiwidW5tb3VudE9uRXhpdCIsInB5IiwicGIiLCJhc3NpZ25lZCIsInVzZUVmZmVjdCIsIkJhZGdlRmVhdHVyZUZpbHRlciIsImJhZGdlX2ZlYXR1cmVzX3R5cGVzIiwibmV3RmlsdGVycyIsImYiLCJiZiIsInVzZVJlZiIsIlN0YWNrIiwiRmlsdGVyTGlzdEljb24iLCJCYWRnZSIsIkJ1dHRvbiIsIkNhcmQiLCJEaXZpZGVyIiwiUGFwZXIiLCJjb25uZWN0IiwiVGlja2V0VHlwZUZpbHRlciIsIlN0YXR1c0ZpbHRlciIsIkZyZWVQYWlkRmlsdGVyIiwiUHJvbW9Db2RlRmlsdGVyIiwiRmlsdGVyIiwib25SZXNldCIsInNob3dGaWx0ZXJMaXN0Iiwic2V0U2hvd0ZpbHRlckxpc3QiLCJzaG93RGF0ZXBpY2tlciIsInNldFNob3dEYXRlcGlja2VyIiwiZmlsdGVyTnVtQWN0aXZlIiwic2V0RmlsdGVyTnVtQWN0aXZlIiwiZmlsdGVyUmVmIiwiaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlIiwiZXZlbnQiLCJjdXJyZW50IiwiY29udGFpbnMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIk1BUkdJTl9SSUdIVF9XSVRIX0JBREdFIiwiQUREX0ZJTFRFUl9OVU1CRVIiLCJjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzIiwiY291bnQiLCJ0cmltIiwidG9nZ2xlIiwiaGFuZGxlRmlsdGVyUmVzZXQiLCJmaWx0ZXJDb250YWluZXIiLCJyZWYiLCJwdCIsImJhZGdlQ29udGVudCIsIm1yIiwiZmlsdGVySWNvbiIsImZpbHRlckxhYmVsIiwiZmlsdGVyTGlzdENvbnRhaW5lciIsImNvbnRhaW5lciIsImVsZXZhdGlvbiIsImZpbHRlckNoZWNrYm94Q29udGFpbmVyIiwidmFyaWFudCIsImNsZWFuQnV0dG9uIiwibWFwU3RhdGVUb1Byb3BzIiwicHJvbW9Db2RlIiwic2V0UHJvbW9Db2RlIiwiZGVib3VuY2VUaW1lciIsIkRFQk9VTkNFX1ZBTFVFIiwibmV3UHJvbW9Db2RlIiwiY2xlYXJUaW1lb3V0IiwicGxhY2Vob2xkZXIiLCJzdHlsZWQiLCJTZWFyY2hJY29uIiwiQ2xvc2VJY29uIiwiSW5wdXRCYXNlIiwiU2VhcmNoQ29udGFpbmVyIiwicG9zaXRpb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJkaXNwbGF5IiwiU2VhcmNoSWNvbldyYXBwZXIiLCJoZWlnaHQiLCJqdXN0aWZ5Q29udGVudCIsIlN0eWxlZElucHV0QmFzZSIsImJvcmRlckJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiQ2xvc2VJY29uV3JhcHBlciIsInBhZGRpbmciLCJ0b3AiLCJyaWdodCIsImN1cnNvciIsInpJbmRleCIsIlNlYXJjaCIsIm9uU2VhcmNoIiwic2hvd0Nsb3NlIiwic2V0U2hvd0Nsb3NlIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsIm9uS2V5RG93biIsIm5hdGl2ZUV2ZW50IiwicmVzZXRTZWFyY2giLCJpbnB1dFByb3BzIiwiSW1wb3J0RXhwb3J0SWNvbiIsIlNvcnQiLCJvblNvcnQiLCJzaG93U29ydCIsInNldFNob3dTb3J0Iiwic29ydFJlZiIsImhhbmRsZVNvcnRDbGlja091dHNpZGUiLCJzb3J0Q29udGFpbmVyIiwic29ydEljb24iLCJzb3J0TGFiZWwiLCJzb3J0TGlzdENvbnRhaW5lciIsInRpY2tldF90eXBlcyIsIkdyaWQiLCJGaWx0ZXJzIiwianVzdGlmeSIsIml0ZW0iLCJ4cyIsImdhcCIsImZpbHRlclNvcnRDb250YWluZXIiLCJmb290ZXIiLCJjYW5jZWxCdG4iLCJzaXplIiwic2F2ZUJ0biIsIkVycm9ySWNvbiIsIkVycm9yTGFiZWwiLCJkYXRhVGVzdElkIiwiZXJyb3JMYWJlbCIsIkJhY2tkcm9wIiwiQ2lyY3VsYXJQcm9ncmVzcyIsIkxvYWRlciIsImRyYXdlciIsIkluZmluaXRlU2Nyb2xsIiwiT3JkZXJzTGlzdCIsIk9ORV9QQUdFX05FWFQiLCJNeU9yZGVyc1RpY2tldHMiLCJmZXRjaERhdGEiLCJtZW1iZXJPcmRlcnMiLCJvcmRlcnNfY3VycmVudF9wYWdlIiwib3JkZXJzX2xhc3RfcGFnZSIsIm15T3JkZXJzV3JhcHBlciIsImRhdGFMZW5ndGgiLCJuZXh0IiwiaGFzTW9yZSIsInNjcm9sbFRocmVzaG9sZCIsIm5vT3JkZXJzRm91bmQiLCJub09yZGVyc0ljb25XcmFwcGVyIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJmb3JtYXRDdXJyZW5jeSIsIl9GcmFnbWVudCIsIk9yZGVyU3VtbWFyeVRhYmxlIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwidGF4ZXNUb3RhbCIsImFtb3VudFRvdGFsIiwidGlja2V0U3VtbWFyeSIsImh1bmRyZWQiLCJvcmRlclN1bW1hcnlUYWJsZSIsInRpY2tldFRvdGFsIiwicXR5IiwidGlja2V0X3R5cGUiLCJjb3N0IiwiYWxpZ24iLCJjdXJyZW5jeSIsImNyZWF0ZWQiLCJkaXNjb3VudF9hbW91bnQiLCJ0YXhlc19hbW91bnQiLCJzaGFwZSIsInVzZU5vdyIsInRpY2tldHNSZWZ1bmRhYmxlIiwiUmVmdW5kRW1haWxTdXBwb3J0Iiwic3VibWl0UmVxdWVzdCIsIm9uUmVmdW5kQ2xpY2siLCJvblJlZnVuZERldGFpbENsaWNrIiwibm93IiwiaXNJblJlZnVuZGFibGVQZXJpb2QiLCJyZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUiLCJhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCIsImlzUmVmdW5kYWJsZSIsImhhc1JlZnVuZFJlcXVlc3RzIiwicm9sZSIsIm9yZGVyU3VtbWFyeUJ1dHRvbiIsInJlZnVuZERpc2FibGVkIiwicmVsIiwic3VwcG9ydF9lbWFpbCIsImFycmF5T2YiLCJPcmRlclN1bW1hcnkiLCJvcmRlclN1bW1hcnlXcmFwcGVyIiwicHgiLCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvIiwibWVtYmVyVGlja2V0cyIsIk9yZGVyTGlzdFRpY2tldHMiLCJBc3NpZ25Ub01lIiwidXNlclRpY2tldHMiLCJ1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlIiwidXNlcl90aWNrZXRzX2xhc3RfcGFnZSIsIm9yZGVyVGlja2V0Q29udGFpbmVyIiwiYXNzaWduZWRUb01lV3JhcHBlciIsInRpY2tldExpc3RDb250YWluZXIiLCJpc1JlZnVuZE1vZGFsIiwiaXNTZWxlY3RlZFRvUmVmdW5kIiwic2VsZWN0VG9SZWZ1bmQiLCJpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQiLCJub1RpY2tldHNGb3VuZCIsIlR5cG9ncmFwaHkiLCJBc3NpZ25lZFRvIiwiRXh0ZXJuYWxBc3NpZ25lZFRvIiwiTWFuYWdlRm9yIiwiQXR0ZW5kZWVTdGF0dXMiLCJfdGlja2V0JG93bmVyIiwiX3RpY2tldCRvd25lcjIiLCJfdGlja2V0JG93bmVyMyIsImlzVW5hc3NpZ25lZCIsImlzX2FjdGl2ZSIsImlzRGVsZWdhdGVkIiwidGlja2V0T3duZXJFbWFpbCIsIl90aWNrZXQkb3JkZXIiLCJfdGlja2V0JG9yZGVyMiIsIl90aWNrZXQkb3duZXI0IiwiX3RpY2tldCRvd25lcjUiLCJhc3NpZ25lZEJ5VGV4dCIsIm93bmVyX2ZpcnN0X25hbWUiLCJvd25lcl9sYXN0X25hbWUiLCJQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQiLCJPcmRlckxpc3RJdGVtIiwiX29yZGVyJG1lbWJlclRpY2tldHMiLCJfb3JkZXIkbWVtYmVyVGlja2V0czIiLCJvblBhZ2luYXRlQ2xpY2siLCJ0aWNrZXRzVG9SZWZ1bmQiLCJpdGVtc1RvRGlzcGxheSIsInNldEl0ZW1zVG9EaXNwbGF5Iiwic2xpY2VkVGlja2V0cyIsInNsaWNlIiwib25WaWV3TW9yZSIsInRpY2tldHNfdG90YWwiLCJvblZpZXdMZXNzIiwiZmluZCIsInZpZXdNb3JlQnV0dG9uIiwidXNlRGlzcGF0Y2giLCJUaWNrZXRTdGF0dXMiLCJnZXRTdW1taXRSZWFzc2lnbkRhdGUiLCJUaWNrZXREZXRhaWwiLCJ1c2VUaWNrZXREZXRhaWxzIiwiVGlja2V0QXNzaWduIiwibW9kYWxWaWV3cyIsImRldGFpbCIsInJlYXNzaWduIiwiYXNzaWduIiwiVGlja2V0Q1RBcyIsImlzSW5jb21wbGV0ZSIsImlzUmVhc3NpZ25hYmxlIiwib25PcGVuQ2xpY2siLCJhc3NpZ25UaWNrZXRCdXR0b24iLCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uIiwicmVhc3NpZ25CdXR0b24iLCJfdGlja2V0JHRpY2tldF90eXBlIiwiX3RpY2tldCRiYWRnZSIsImNhblJlYXNzaWduIiwibW9kYWxPcGVuIiwic2V0TW9kYWxPcGVuIiwicmVhc3NpZ25EYXRlIiwib25SZWFzc2lnbmFibGVQZXJpb2QiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlT3Blbk1vZGFsIiwidmlldyIsIm9yZGVyV3JhcHBlciIsInJlZnVuZE1vZGFsIiwiZGlzYWJsZWRSZWZ1bmQiLCJzZWxlY3RlZCIsImNoZWNrYm94IiwicGwiLCJ0aWNrZXRUaWNrZXRUeXBlIiwiYmFkZ2VGZWF0dXJlV3JhcHBlciIsInByIiwiYmFkZ2UiLCJmZWF0dXJlcyIsImJhZGdlRmVhdHVyZSIsInNyYyIsImltYWdlIiwiYWx0IiwidGlja2V0Tm8iLCJmbGV4V3JhcCIsIm1pbldpZHRoIiwidGlja2V0QWN0aW9uQnV0dG9ucyIsIm93bmVySWQiLCJ0b3RhbF9yZWZ1bmRlZF9hbW91bnQiLCJUYWJzIiwiVGFiIiwiUmVmdW5kUmVxdWVzdHNNb2RhbCIsIlJlZnVuZERldGFpbHMiLCJUYWJQYW5lbCIsInByb3BzIiwiaW5kZXgiLCJoaWRkZW4iLCJPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSIsImlzTW9iaWxlIiwiZGV0YWlsc1JlcXVpcmVkIiwic2V0VmFsdWUiLCJfIiwic2V0VGlja2V0c1RvUmVmdW5kIiwic2V0U3VibWl0UmVxdWVzdCIsInJlZnVuZERldGFpbHNPcGVuIiwic2V0UmVmdW5kRGV0YWlsc09wZW4iLCJ1bnNlbGVjdFJlZnVuZFRpY2tldHMiLCJmaWx0ZXJTZWxlY3RlZCIsInNlbGVjdGVkVGlja2V0IiwiY2xvc2VTdWJtaXRSZXF1ZXN0IiwicmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyIsIm1vcmVEZXRhaWxzIiwiYm9yZGVyQ29sb3IiLCJ0YWJCdXR0b25zIiwibWQiLCJvblJlZnVuZFN1Y2Nlc3NDbG9zZSIsIm9uQ2xvc2VTbGlkZXIiLCJ1c2VUaGVtZSIsInVzZU1lZGlhUXVlcnkiLCJnZXRGb3JtYXR0ZWREYXRlIiwidGlja2V0X3Blcl9wYWdlIiwiYnJlYWtwb2ludHMiLCJkb3duIiwiaXNNb2JpbGVWaWV3YWJsZSIsInNldE1vYmlsZVZpZXdhYmxlIiwidGlja2V0c19wYWdlX2N1cnJlbnQiLCJsZyIsIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lciIsIm9yZGVyVGlja2V0SW5mbyIsInJvd1NwYWNpbmciLCJjb2x1bW5TcGFjaW5nIiwic20iLCJkaXNwbGF5X25vbmUiLCJmbGV4RGlyZWN0aW9uIiwidXNlTWVtbyIsIlJpZ2h0RHJhd2VyIiwiUmVmdW5kUmVxdWVzdGVkVGlja2V0IiwiZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyIsInJlcXVlc3RlZFRpY2tldHMiLCJjbG9zZVNsaWRlciIsInJlZnVuZERldGFpbHMiLCJ0b29sdGlwQ2xhc3NlcyIsIkluZm9JY29uIiwibW9tZW50IiwiUmVmdW5kU3RhdHVzIiwiR1JJRF84IiwiR1JJRF8xMiIsIlBBRERJTkdfMiIsImFwcHJvdmVkUmVmdW5kcyIsInJlZnVuZCIsInJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkiLCJyZWZ1bmRlZF90YXhlcyIsInJ0IiwidGF4SWQiLCJ0YXgiLCJ0b3RhbFJlZnVuZGVkVGF4QW1vdW50IiwicmVmdW5kZWRfYW1vdW50IiwiSHRtbFRvb2x0aXAiLCJjbGFzc2VzIiwicG9wcGVyIiwibWF4V2lkdGgiLCJib3JkZXIiLCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXIiLCJyZWZ1bmREZXRhaWwiLCJyZWZ1bmRUaWNrZXRBdHRlbmRlZSIsImFjdGlvbl9kYXRlIiwiZm9ybWF0IiwiQ2hpcCIsImdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yIiwic3RhdHVzQ29sb3IiLCJidXR0b25QaWxsIiwiU3R5bGVkRW5naW5lUHJvdmlkZXIiLCJDaGVja0NpcmNsZUljb24iLCJTVEVQX09ORSIsIlNURVBfVEhSRUUiLCJTVEVQX1RXTyIsInN0ZXAiLCJzZXRTdGVwIiwiZXJyb3JNc2ciLCJzZXRFcnJvck1zZyIsInJlZnVuZFN1Y2Nlc3MiLCJzZXRSZWZ1bmRTdWNjZXNzIiwiY29uZmlybVJlZnVuZCIsImdvQmFja1RvUmVmdW5kIiwicmVmdW5kVGlja2V0cyIsInJlZnVuZFN0ZXBPbmUiLCJzdWJ0aXRsZSIsInRpY2tldExpc3QiLCJhY3Rpb25CdXR0b25zIiwiY2FuY2VsQnV0dG9uIiwiY29udGludWVCdXR0b24iLCJyZWZ1bmRTdGVwVHdvIiwicmVmdW5kRXJyb3JNc2ciLCJDVEFCdXR0b25XcmFwcGVyIiwicmVmdW5kU3RlcFRocmVlIiwicmVmdW5kU3VjY2Vzc2Z1bCIsInN1Y2Nlc3NNc2ciLCJzdWNjZXNzTXNnMiIsInJlbmRlclN0ZXBzIiwiaW5qZWN0Rmlyc3QiLCJEcmF3ZXIiLCJDbG9zZSIsImFuY2hvciIsIk1vZGFsUHJvcHMiLCJrZWVwTW91bnRlZCIsImhlYWRlciIsImNsb3NlQnRuIiwiZmxvYXQiLCJndXR0ZXJCb3R0b20iLCJvbmVPZlR5cGUiLCJnZXRTdW1taXRGb3JtYXR0ZWREYXRlIiwiU3VtbWl0SGVhZGVyIiwid2lkZ2V0SGVhZGVyIiwic3VtbWl0VGl0bGVEYXRlIiwieXVwIiwiRGVsZWdhdGVGb3JtIiwiZGVsZWdhdGVfZmlyc3RfbmFtZSIsImRlbGVnYXRlX2xhc3RfbmFtZSIsImRlbGVnYXRlX2VtYWlsIiwicmVzZXRGb3JtIiwiaGFuZGxlQ2FuY2VsIiwiTGluayIsIkFzc2lnbkhlYWRlciIsImluUHJvZ3Jlc3MiLCJ1c2VyRW1haWwiLCJhc3NpZ25lZFRvWW91IiwiZ2V0U2Vjb25kYXJ5VGl0bGUiLCJnZXRIZWFkZXJOb3RlIiwidHJhbnNLZXkiLCJjb21wb25lbnQiLCJwdXJjaGFzZWRCeVdyYXBwZXIiLCJwdXJjaGFzZWRCeSIsIm93bmVyX2VtYWlsIiwib3JkZXJObyIsImhlYWRlck5vdGUiLCJSZWFzc2lnbkhlYWRlciIsImFsbG93c0RlbGVnYXRlIiwiUmVhc3NpZ25Gb3JtIiwibmV3X2F0dGVuZGVlX2VtYWlsIiwicGVyc29uYWxfbWVzc2FnZSIsIm11bHRpbGluZSIsIm1pblJvd3MiLCJ1c2VHZXRUaWNrZXQiLCJzYXZlTWVzc2FnZSIsInNldFNhdmVNZXNzYWdlIiwiYXNzaWduT3B0aW9uIiwic2V0QXNzaWduT3B0aW9uIiwiYXNzaWduYXRpb25JblByb2dyZXNzIiwic2V0QXNzaWduYXRpb25JblByb2dyZXNzIiwiaXNBc3NpZ25lZFRvTWUiLCJvbkFzc2lnbiIsIm9uRGVsZWdhdGUiLCJvbkNsb3NlRVFGb3JtIiwib25DbG9zZVNhdmVNZXNzYWdlIiwib25TYXZlRVEiLCJkZXNjcmlwdGlvbiIsInJlc29sdmUiLCJIZWFkZXIiLCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lciIsImFzc2lnbk9wdGlvbnNXcmFwcGVyIiwibXkiLCJBdXRvY29tcGxldGUiLCJxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyIsIkNvbXBhbnlGaWVsZCIsInN1bW1pdElkIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJvcHRpb25zIiwic2V0T3B0aW9ucyIsInNldEZpZWxkVG91Y2hlZCIsInJlc3VsdHMiLCJuZXdPcHRpb25zIiwiYXV0b0NvbXBsZXRlIiwiZnJlZVNvbG8iLCJpbmNsdWRlSW5wdXRJbkxpc3QiLCJmaWx0ZXJTZWxlY3RlZE9wdGlvbnMiLCJnZXRPcHRpb25MYWJlbCIsIm9wdGlvbiIsInRtcFZhbHVlIiwib25JbnB1dENoYW5nZSIsIm5ld0lucHV0VmFsdWUiLCJmaWx0ZXJPcHRpb25zIiwiZmlsdGVyZWQiLCJpc0V4aXN0aW5nIiwicmVuZGVySW5wdXQiLCJyZW5kZXJPcHRpb24iLCJvcHRpb25Qcm9wcyIsIlRpY2tldE93bmVyRmllbGRzIiwiVGlja2V0Rm9ybSIsImNhbkVkaXQiLCJyZWR1Y2UiLCJhZGRpdGlvbmFsRGV0YWlscyIsImluZm9Ob3RlIiwiUVJDb2RlIiwiRmlsZURvd25sb2FkT3V0bGluZWQiLCJEb3dubG9hZEljb24iLCJFbWFpbE91dGxpbmVkIiwiRW1haWxJY29uIiwiVFdPX0lURU0iLCJfdGlja2V0JG9yZGVyMyIsInNlbnRDb25maXJtYXRpb24iLCJzZXRTZW50Q29uZmlybWF0aW9uIiwiaXNVc2VyT3JkZXJPd25lciIsIm93bmVyX2lkIiwiaXNVc2VyVGlja2V0T3duZXIiLCJjYW5FZGl0VGlja2V0RGF0YSIsImFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnMiLCJpc0NvbXBsZXRlIiwib25TYXZlIiwiZG93bmxvYWRUaWNrZXRQZGYiLCJvblNlbmRFbWFpbCIsInRpY2tldERldGFpbENvbnRhaW5lciIsInFyQ29kZSIsInFyX2NvZGUiLCJ2aWV3Qm94IiwicXJOb3RlIiwiaXNfdmlydHVhbCIsImFjdGlvbkJ1dHRvbnNDb250YWluZXIiLCJkb3dubG9hZEJ0biIsInNlbmRCdG4iLCJzZW50Iiwib3JkZXJOdW1iZXIiLCJhdHRlbmRlZUNvbnRhaW5lciIsImF0dGVuZGVlSW5mb1RpdGxlIiwiQ29udGFpbmVyIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzIiwiaXNBY3RpdmUiLCJyZWZ1bmRSZXF1ZXN0cyIsInRpY2tldFN0YXR1c0NvbnRhaW5lciIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJBc3NpZ25lZFRvTWUiLCJXaWRnZXRUYWJzIiwidGFiIiwic2V0VGFiIiwidGlja2V0c0Z1bGx5TG9hZGVkIiwic2V0VGlja2V0c0Z1bGx5TG9hZGVkIiwib3JkZXJzX3Blcl9wYWdlIiwib3JkZXJzUGVyUGFnZSIsInRpY2tldFBlclBhZ2UiLCJoYW5kbGVUYWJDaGFuZ2UiLCJuZXdUYWIiLCJmZXRjaEFzc2lnbmVkVGlja2V0cyIsImZldGNoT3JkZXJUaWNrZXRzIiwib3JkZXJUaWNrZXRzUHJvbWlzZXMiLCJjdXJyZW50X3BhZ2UiLCJmZXRjaFByb21pc2VzIiwidGFiV3JhcHBlciIsIldpZGdldFdyYXBwZXIiLCJtZXNzYWdlQ2FsbGJhY2siLCJsb2FkaW5nIiwiYXBpRXJyb3IiLCJyZXNldEFwaUVycm9yIiwiZmlsdGVyVmFsdWUiLCJzb3J0VmFsdWUiLCJ0aWNrZXRzVGl0bGVUZXh0IiwiUHJvdmlkZXIiLCJydW4iLCJjdXJyZW50VGlja2V0Iiwic21vb3RoU2Nyb2xsVG8iLCJ0YXJnZXRTY3JvbGxUb3AiLCJkdXJhdGlvbiIsInN0YXJ0U2Nyb2xsVG9wIiwic2Nyb2xsVG9wIiwiZGlzdGFuY2UiLCJzdGFydFRpbWUiLCJhbmltYXRpb25TdGVwIiwidGltZXN0YW1wIiwiZWxhcHNlZCIsInByb2dyZXNzIiwiTWF0aCIsIm1pbiIsImVhc2VJbk91dFF1YWQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjb250YWluZXJJZCIsImlzVmFsaWQiLCJlcnJvckFycmF5IiwiZXJyb3JDb3VudCIsImVsZW1lbnRzU29ydGVkIiwicmVzdWx0IiwiZWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJlbFJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJhIiwiYiIsImdldEVsZW1lbnRCeUlkIiwiY29udGFpbmVyUmVjdCIsImVsZW1PZmZlc3QiLCJhbmltYXRpb25EdXJhdGlvbiIsImlzVGlja2V0UmVmdW5kYWJsZSIsIlNUQVRVU19DT01QTEVURSIsIlNUQVRVU19JTkNPTVBMRVRFIiwiU1RBVFVTX0NBTkNFTExFRCIsIlNUQVRVU19VTkFTU0lHTkVEIiwiX3RpY2tldCRwcm9tb19jb2RlIiwiX3RpY2tldCR0aWNrZXRfdHlwZTIiLCJfdGlja2V0JHByb21vX2NvZGUyIiwiZ2V0U3RhdHVzIiwiYWxsb3dzX3RvX2RlbGVnYXRlIiwicHJvbW9fY29kZSIsImFsbG93c190b19yZWFzc2lnbiIsImluaXRSZWFjdEkxOG5leHQiLCJMYW5ndWFnZURldGVjdG9yIiwiZW4iLCJlcyIsInVzZSIsImluaXQiLCJmYWxsYmFja0xuZyIsImRlYnVnIiwicmVzb3VyY2VzIiwidHJhbnNsYXRpb24iLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiLCJMT0dPVVRfVVNFUiIsIlNUQVJUX0xPQURJTkciLCJTVE9QX0xPQURJTkciLCJSRVNFVF9MT0FESU5HIiwiaGFzTG9hZGVkQWxsRGF0YSIsIkRFRkFVTFRfRklMVEVSX1NUQVRFIiwiREVGQVVMVF9TVEFURSIsIndpZGdldExvYWRpbmciLCJjdXJyZW50X3RhYiIsIm9yZGVyc190b3RhbCIsInRpY2tldF9jdXJyZW50X3BhZ2UiLCJ0aWNrZXRfbGFzdF9wYWdlIiwidGlja2V0X3RvdGFsIiwidXNlcl90aWNrZXRzX3RvdGFsIiwiV2lkZ2V0UmVkdWNlciIsInRvdGFsIiwibGFzdF9wYWdlIiwiZm9ybWVyT3JkZXIiLCJvIiwiX2RhdGEkIiwidXBkYXRlZE9yZGVyIiwidGlja2V0c19wYWdlX2xhc3QiLCJtbyIsIl90aWNrZXRzUmVmdW5kUmVxdWVzdCIsInVwZGF0ZWRUaWNrZXRzIiwidHJyIiwidGlja2V0RGF0YSIsIm5ld09yZGVycyIsIm5ld1RpY2tldHMiLCJjb25maWd1cmVTdG9yZSIsInBlcnNpc3RTdG9yZSIsInBlcnNpc3RSZWR1Y2VyIiwiRkxVU0giLCJSRUhZRFJBVEUiLCJQQVVTRSIsIlBFUlNJU1QiLCJQVVJHRSIsIlJFR0lTVEVSIiwic3RvcmFnZSIsImNvbWJpbmVSZWR1Y2VycyIsImdldFN0b3JlIiwiY2xpZW50SWQiLCJsb2dpblVybCIsInJlZHVjZXJzIiwic3RvcmUiLCJyZWR1Y2VyIiwibWlkZGxld2FyZSIsImdldERlZmF1bHRNaWRkbGV3YXJlIiwidGh1bmsiLCJleHRyYUFyZ3VtZW50IiwiaW1tdXRhYmxlQ2hlY2siLCJzZXJpYWxpemFibGVDaGVjayIsImlnbm9yZWRBY3Rpb25zIiwidXNlSW5pdFN0b3JlIiwiY29uZmlnIiwicGVyc2lzdG9yIiwiaW5pdExvZ091dCIsImdldEFjY2Vzc1Rva2VuIiwiU2VudHJ5IiwiY2FwdHVyZUV4Y2VwdGlvbiIsIkxBU1RfSE9VUl9PRl8yNF9IT1VSIiwiTEFTVF9NSU5VVEVfT0ZfSE9VUiIsIk9ORV9EQVkiLCJTVEFUVVNfUEVORElORyIsIlNUQVRVU19FUlJPUiIsIlNUQVRVU19QUk9DRVNTSU5HIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRCIsIlNUQVRVU19SRUZVTkRfUkVKRUNURUQiLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMiLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiRklWRV9JVEVNIiwiU0lYX0lURU0iLCJsb2NhbGUiLCJkZWZhdWx0T3B0aW9ucyIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImZvcm1hdHRlciIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJkYXRldGltZSIsInRpbWVab25lIiwidHoiLCJ1bml4IiwiYW1vdW50IiwicHVyY2hhc2VUaWNrZXRUb3RhbCIsImN1cnJlbmN5T2JqZWN0IiwidGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlIiwidGlja2V0VHlwZSIsInR0IiwidGlja2V0X3R5cGVfaWQiLCJwdXJjaGFzZVRvdGFsIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZ2V0T3JkZXJUaWNrZXRzIiwiX29yZGVycyQiLCJvcmRlcnMiLCJnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMiLCJ0cyIsInNldEhvdXJzIiwiZGVmYXVsdEN1cnJlbnRUaW1lIiwicm91bmQiLCJEYXRlIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsImN1cnJlbnRQYWdlIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImdldFN1bW1pdExvY2F0aW9uIiwiX3N1bW1pdCRsb2NhdGlvbnMiLCJsb2NhdGlvbiIsImxvY2F0aW9ucyIsImwiLCJjbGFzc19uYW1lIiwiaXNfbWFpbiIsImNpdHkiLCJjb3VudHJ5IiwidXNlU3VtbWl0RGV0YWlscyIsIl9zdW1taXQkdGltZV96b25lIiwiX3N1bW1pdCR0aW1lX3pvbmUyIiwiZm9ybWF0dGVkRGF0ZSIsImZvcm1hdHRlZFJlYXNzaWduRGF0ZSIsInRpbWVfem9uZSIsImRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUiLCJpc1Bhc3QiLCJpc1N0YXJ0ZWQiLCJzdGF0dXNEYXRhIiwiZ2V0VGlja2V0U3RhdHVzS2V5IiwiZ2V0VGlja2V0U3RhdHVzRGF0YSIsImlzU3VtbWl0UGFzdCIsImdldFRpY2tldFJvbGUiLCJmZWF0dXJlIiwiZ2V0VGlja2V0VHlwZSIsImZpbmFsX2Ftb3VudCIsIm5ldF9zZWxsaW5nX2Nvc3QiLCJyciIsImdldFJlZnVuZGVkUmVxdWVzdGVkVGlja2V0cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczIiLCJhbGxUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczQiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM1IiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM2IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczgiLCJnZXRUeXBlVmFsaWRhdGlvbiIsInNjaGVtYSIsIm9uZU9mIiwib2YiLCJwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyIiwib25seVJlbGV2YW50Iiwic3ViUXVlc3Rpb25TbHVnIiwic3ViQW5zd2VyIiwibWF0Y2giLCJpbmNsdWRlQXR0ZW5kZWVJbmZvIiwiaW5jbHVkZURpc2NsYWltZXIiLCJidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYSIsIl9zdWJRdWVzdGlvbiRzdWJfcXVlcyIsInN1YlF1ZXN0aW9uIiwibnVsbGFibGUiLCJ3aGVuIiwiaXMiLCJxdWVzdGlvbkFucyIsImFuc1ZhbHVlTWF0Y2giLCJzY2giLCJzdWJSdWxlIiwiZGlzY2xhaW1lck1hbmRhdG9yeSIsImxhenkiLCJ0eXBlRXJyb3IiLCJQZXJzaXN0R2F0ZSIsIk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0Iiwic3VwcG9ydEVtYWlsIiwiaGFuZGxlQmVmb3JlTGlmdCIsIlVSTFNlYXJjaFBhcmFtcyIsInNlYXJjaCIsImZsdXNoIiwiaGFzIiwib25CZWZvcmVMaWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==