my-orders-tickets-widget 1.0.0-beta.3 → 1.0.0-beta.5

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
@@ -1,2 +1,3055 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("my-orders-tickets-widget",[],t):"object"==typeof exports?exports["my-orders-tickets-widget"]=t():e["my-orders-tickets-widget"]=t()}(this,(()=>(()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(t,r)=>{for(var s in r)e.o(r,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:r[s]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{default:()=>mt});const r=require("react"),s=require("prop-types");var n=e.n(s);const i=require("react-redux"),a=require("redux-persist/integration/react"),o=require("react-i18next"),c=require("@mui/material"),l=require("@reduxjs/toolkit"),d=require("redux-persist"),u=require("redux-persist/lib/storage");var m=e.n(u);const _=require("redux"),p=require("openstack-uicore-foundation/lib/security/actions"),x=require("openstack-uicore-foundation/lib/security/methods"),h=require("openstack-uicore-foundation/lib/utils/actions"),g=1e3,j=5,k=1,f=(0,require("history").createBrowserHistory)(),y="RESET_STATE",b="RESET_FILTER",T="GET_ORDERS",S="GET_TICKETS_BY_ORDER",v="SET_USER",w="SET_SUMMIT",N="FILTER_VAR_DATE",C="FILTER_VAR_ORDER_NUMBER",R=e=>{let{page:t=k,perPage:r=j,filter:s={},sort:n={},next:i=!1}=e;return async(e,a,o)=>{let{apiBaseUrl:c,loginUrl:l}=o;const{widgetState:{summit:d}}=a(),u=await(0,x.getAccessToken)().catch((()=>f.replace(l)));if(!u)return Promise.reject();e((0,h.startLoading)());const m={access_token:u,order:"-id","filter[]":["status==Paid"],relations:"none",page:i?t+1:t,per_page:r};if(Object.keys(s).length>0){const e=(e=>{const t=[];return e.type===N&&t.push(`${e.name}[]${e.lower}&&${e.upper}`),e.type===C&&t.push(`${e.name}=@${e.value}`),t})(s);m["filter[]"]=[...m["filter[]"],...e]}var _;return Object.keys(n).length>0&&(m.order=`${_=n.direction,"asc"===_?"+":"-"}${n.name}`),(0,h.getRequest)(null,(0,h.createAction)(T),`${c}/api/v1/summits/${d.id}/orders/me`,h.authErrorHandler)(m)(e).then((t=>(e((0,h.stopLoading)()),t))).catch((t=>(e((0,h.stopLoading)()),t)))}},q=e=>{let{orderId:t,page:r=k,perPage:s=j}=e;return async(e,n,i)=>{let{apiBaseUrl:a,loginUrl:o}=i;e((0,h.startLoading)());const c=await(0,x.getAccessToken)().catch((()=>f.replace(o)));if(!c)return null;const l={access_token:c,expand:"refund_requests,owner,owner.extra_questions,badge,badge.features,ticket_type",order:"+id",page:r,per_page:s};return(0,h.getRequest)(null,(0,h.createAction)(S),`${a}/api/v1/summits/all/orders/${t}/tickets`,h.authErrorHandler)(l)(e).then((t=>(e((0,h.stopLoading)()),t))).catch((t=>(e((0,h.stopLoading)()),e((0,h.createAction)("GET_TICKETS_BY_ORDER_ERROR")),t)))}},B={summit:null,user:{},widgetLoading:!1,memberOrders:[],errors:{},loading:!1,isOrderLoading:!1,orders_current_page:1,orders_last_page:1,orders_per_page:5,orders_total:0,ticket_current_page:1,ticket_last_page:1,ticket_per_page:5,ticket_total:0},E=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:B,{type:t,payload:r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t){case p.LOGOUT_USER:case y:return B;case b:return{...e,orders_current_page:1,orders_last_page:1};case w:return{...e,summit:r};case v:return{...e,user:r};case T:{const{memberOrders:t}=e,{data:s,total:n,current_page:i}=r.response;return{...e,memberOrders:i===k?s:[...t,...s],orders_total:n,orders_current_page:i}}case S:{const{memberOrders:t}=e,{data:s,total:n,current_page:i,last_page:a}=r.response,o=t.find((e=>e.id===s[0]?.order_id)),c={...o,memberTickets:i===k?s:[...o.memberTickets,...s],tickets_page_current:i,tickets_page_last:a,tickets_total:n};return{...e,memberOrders:t.map((e=>e.id===c.id?c:e))}}default:return e}},D=e=>{const t=(0,r.useMemo)((()=>(e=>{let{clientId:t,loginUrl:r,summit:s,apiBaseUrl:n}=e;const i=(0,_.combineReducers)({widgetState:E});return(0,l.configureStore)({reducer:(0,d.persistReducer)({key:`root_my_orders_tickets_${t}`,storage:m()},i),middleware:e=>e({thunk:{extraArgument:{clientId:t,apiBaseUrl:n,summit:s,loginUrl:r}},immutableCheck:!1,serializableCheck:{ignoredActions:[d.FLUSH,d.REHYDRATE,d.PAUSE,d.PERSIST,d.PURGE,d.REGISTER]}})})})(e)),[]),s=(0,r.useMemo)((()=>(0,d.persistStore)(t)),[t]);return{store:t,persistor:s}},G=require("react-infinite-scroll-component");var I=e.n(G);const O=require("@mui/material/Stack");var M=e.n(O);const P=require("@mui/icons-material/FilterList");var L=e.n(P);const F=require("dayjs");var U=e.n(F);const Y=require("@mui/x-date-pickers/AdapterDayjs"),$=require("@mui/x-date-pickers/LocalizationProvider"),z=require("@mui/x-date-pickers/DatePicker"),A=require("@mui/icons-material/Close");var H=e.n(A);const V=require("moment-timezone");var K=e.n(V);const W=(e,t)=>{let{locale:r="en-US",...s}=t;return new Intl.NumberFormat(r,{style:"currency",currency:"USD",minimumFractionDigits:2,maximumFractionDigits:2,...s}).format(e)},Z=e=>{if(!e)return null;const t=K()(e.start_date*g).tz(e.time_zone_id),r=K()(e.end_date*g).tz(e.time_zone_id),s=r.diff(t,"days");let n="MMMM DD, YYYY",i="MMMM DD, YYYY";t.year()===r.year()&&(n="MMMM DD"),t.month()===r.month()&&(i="DD, YYYY");const a=t.format(n),o=r.format(i);return s>1?`${a} - ${o}`:a},X=(e,t)=>{const r=e.filter((e=>e.id===t));return r[0]?.memberTickets},J=e=>({lower:e.setHours(0,0,0,0)/g,upper:e.setHours(23,59,0,0)/g}),Q=()=>(e,t)=>{const{timerState:r}=t();return null==r?.nowUtc?Math.round(+new Date/g):r?.nowUtc};var ee="calendarDisplay___im_jh",te="container___N3Y4X",re="datePickerContainer___JW2lO",se="datepickerClose___V9gHC",ne="filterDateLabel___ifD4p",ie="label___yNFyj";const ae=require("react/jsx-runtime");function oe(e){let{onFilter:t,onReset:s}=e;const{t:n}=(0,o.useTranslation)(),i=U()(),[a,c]=(0,r.useState)(i);return(0,ae.jsxs)(ae.Fragment,{children:[(0,ae.jsx)("div",{className:ne,children:n("filter.purchased_on")}),(0,ae.jsxs)(M(),{alignItems:"center",direction:"row",sx:{pt:2,pb:2},className:re,children:[(0,ae.jsx)(H(),{fontSize:"large",className:se,onClick:()=>{s(),c(i)}}),(0,ae.jsx)($.LocalizationProvider,{dateAdapter:Y.AdapterDayjs,children:(0,ae.jsx)(z.DatePicker,{className:ee,onChange:e=>{c(e);const r=new Date(e.$d),{lower:s,upper:n}=J(r);t({type:N,name:"created",date:r,lower:s,upper:n})},value:a})})]})]})}function ce(e){let{onFilter:t,onReset:s}=e;const{t:n}=(0,o.useTranslation)(),[i,a]=(0,r.useState)(!1),[l,d]=(0,r.useState)(!1),[u,m]=(0,r.useState)(!1),_=(0,r.useRef)(null),p=e=>{_.current&&!_.current.contains(e.target)&&i&&(a(!1),d(!1))};(0,r.useEffect)((()=>(document.addEventListener("click",p,!1),()=>{document.removeEventListener("click",p,!1)})),[i]);const x=()=>{a(!i),d(!l)};return(0,ae.jsxs)(c.Box,{className:"filterContainer___rGpYV",ref:_,children:[(0,ae.jsxs)(M(),{alignItems:"center",direction:"row",sx:{pt:2,pb:2},onClick:x,children:[(0,ae.jsx)(L(),{fontSize:"large",className:"filterIcon___l21KI"}),u&&(0,ae.jsx)("div",{className:"filterNumActive___VuHCJ",children:"1"}),(0,ae.jsx)("span",{className:"filterLabel____P0wn",children:n("filter.filter")})]}),(0,ae.jsx)(c.Box,{className:`filterListContainer___VmdGq ${te} ${i?"showDatePicker___UpQbp":""}`,children:(0,ae.jsx)(oe,{onReset:()=>{s(),m(!1),x()},onFilter:e=>{t(e),m(!0)}})})]})}oe.propTypes={onFilter:n().func,onReset:n().func},ce.propTypes={onFilter:n().func};const le=ce,de=require("@mui/icons-material/ImportExport");var ue=e.n(de);const me=function(e){let{onSort:t}=e;const{t:s}=(0,o.useTranslation)(),[n,i]=(0,r.useState)(!1),a=(0,r.useRef)(null),l=e=>{a.current&&!a.current.contains(e.target)&&i(!1)};return(0,r.useEffect)((()=>(document.addEventListener("click",l,!1),()=>{document.removeEventListener("click",l,!1)})),[n]),(0,ae.jsxs)(c.Box,{className:"sortContainer___lRsjU",onClick:()=>{i(!n)},children:[(0,ae.jsxs)(M(),{ref:a,alignItems:"center",direction:"row",sx:{pt:2,pb:2},children:[(0,ae.jsx)(ue(),{fontSize:"large",className:"sortIcon___fVV5K"}),(0,ae.jsx)("span",{className:"sortLabel___UqLTC",children:s("sort.sort")})]}),n&&(0,ae.jsxs)(c.Box,{className:`sortListContainer___cmnBD ${te}`,children:[(0,ae.jsx)(c.Button,{className:ie,onClick:()=>t("desc"),children:s("sort.new_first")}),(0,ae.jsx)(c.Button,{className:ie,onClick:()=>t("asc"),children:s("sort.old_first")})]})]})},_e=require("@mui/material/styles"),pe=require("@mui/icons-material/Search");var xe=e.n(pe);const he=require("@mui/material/InputBase");var ge=e.n(he);const je=(0,_e.styled)("div")((()=>({position:"relative",marginRight:"0",marginLeft:"0",width:"100%",display:"block"}))),ke=(0,_e.styled)("div")((()=>({height:"100%",position:"absolute",display:"flex",alignItems:"center",justifyContent:"center"}))),fe=(0,_e.styled)(ge())((()=>({color:"inherit",borderBottom:"1px solid rgba(0, 0, 0, 0.42)",paddingLeft:"25px",paddingRight:"25px",fontSize:"1em"}))),ye=(0,_e.styled)(H())((()=>({padding:"2px",fontSize:"1.5em",height:"100%",position:"absolute",top:"0",right:"0",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",zIndex:"1000"})));function be(e){let{onSearch:t,onReset:s}=e;const{t:n}=(0,o.useTranslation)(),[i,a]=(0,r.useState)(!1),[l,d]=(0,r.useState)("");return(0,ae.jsx)(c.Box,{children:(0,ae.jsxs)(je,{children:[i&&(0,ae.jsx)(ye,{onClick:()=>{d(""),a(!1),s()},children:(0,ae.jsx)(H(),{})}),(0,ae.jsx)(ke,{children:(0,ae.jsx)(xe(),{})}),(0,ae.jsx)(fe,{placeholder:n("order_search.order_number"),inputProps:{"aria-label":"search"},value:l,onChange:e=>d(e.target.value),onKeyDown:e=>{const{key:r,nativeEvent:{target:{value:s}}}=e;"Enter"===r&&(t({value:s,name:"number",type:C}),a(!0))}})]})})}be.propTypes={onSearch:n().func,onReset:n().func};const Te=be;function Se(e){let{onFilter:t,onSort:r,onSearch:s,onReset:n}=e;return(0,ae.jsxs)(c.Grid,{container:!0,justify:"flex-end",alignItems:"center",children:[(0,ae.jsxs)(c.Grid,{item:!0,xs:6,container:!0,padding:1,gap:2,className:"filterSortContainer___arBvQ",sx:{pt:2,pb:2},children:[(0,ae.jsx)(c.Grid,{item:!0,children:(0,ae.jsx)(le,{onFilter:t,onReset:n})}),(0,ae.jsx)(c.Grid,{item:!0,children:(0,ae.jsx)(me,{onSort:r})})]}),(0,ae.jsx)(c.Grid,{item:!0,xs:6,container:!0,justifyContent:"flex-end",children:(0,ae.jsx)(Te,{onSearch:s,onReset:n})})]})}Se.propTypes={onFilter:n().func,onSort:n().func,onSearch:n().func,onReset:n().func};const ve=Se,we=require("@mui/material/useMediaQuery");var Ne=e.n(we);const Ce=require("@mui/icons-material/ContentCopy");var Re=e.n(Ce),qe="tabButtons___xTyJA",Be="ticketListContainer___cfmrr",Ee="ticketOwnerEmail___Zt4OE",De="viewFinishTicketButton___HF6Im",Ge="viewMoreButton___K_1zT";function Ie(e){let{number:t,copy:r=!1,truncated:s=!1}=e;return(0,ae.jsxs)("div",{className:"orderTicketNoContainer___vqohN",children:[(0,ae.jsx)("span",{className:s&&"orderTicketNumberTruncated___HXmdw",children:t}),r&&(0,ae.jsx)(Re(),{className:"copyIcon___NkHGO",onClick:()=>navigator.clipboard.writeText(t)})]})}Ie.propTypes={number:n().string,copy:n().bool};const Oe=Ie,Me=require("@mui/material/Tabs");var Pe=e.n(Me);const Le=require("@mui/material/Tab");var Fe=e.n(Le);const Ue=require("@mui/icons-material/Error");var Ye=e.n(Ue),$e="buttonPill___zq2tc";function ze(e){let{ticket:t}=e;const{t:r}=(0,o.useTranslation)(),s=t.is_active,n=t.refund_requests.find((e=>"Requested"===e.status)),i="Incomplete"===t.owner?.status,a=0===t.owner_id,l=t.owner&&"Complete"===t.owner?.status;return(0,ae.jsx)(c.Container,{className:"ticketStatusContainer___qj6fb",children:s?(0,ae.jsxs)(ae.Fragment,{children:[n&&(0,ae.jsx)(c.Button,{className:`${$e} buttonRefundRequested___pWt30`,children:r("ticket_status.status_refund_requested")}),i&&(0,ae.jsx)(c.Button,{className:`${$e} buttonIncomplete___TolHg`,children:r("ticket_status.status_incomplete")}),a&&(0,ae.jsx)(c.Button,{className:`${$e} buttonUnassigned___YDd8X`,children:r("ticket_status.status_unassigned")}),l&&(0,ae.jsx)(c.Button,{className:`${$e} buttonComplete___llWkZ`,children:r("ticket_status.status_complete")})]}):(0,ae.jsx)(c.Button,{className:`${$e} buttonCancelled___ErlDZ`,children:r("ticket_status.status_cancelled")})})}ze.propTypes={ticket:n().shape({owner:n().shape({status:n().string}),refund_requests:n().arrayOf(Object)})};const Ae=ze;function He(e){let{ticket:t,summit:r}=e;const{t:s}=(0,o.useTranslation)(),n=(0,i.useDispatch)()(Q());return(0,ae.jsxs)(c.Grid,{className:"orderWrapper___yDBAo",container:!0,children:[(0,ae.jsx)(c.Grid,{xs:7,padding:2,item:!0,className:"ticketTicketType___Zq_f0",children:(0,ae.jsx)("h4",{children:t.ticket_type?.name})}),(0,ae.jsx)(c.Grid,{xs:5,padding:2,item:!0}),(0,ae.jsxs)(c.Grid,{xs:12,sx:{px:2,pb:2},item:!0,children:[t.owner?.email?(0,ae.jsxs)(ae.Fragment,{children:[(0,ae.jsxs)(c.Box,{className:"label___zXDWz",children:[s("ticket_status.assigned_to"),":"]}),(0,ae.jsx)(c.Box,{className:Ee,children:t.owner?.email})]}):t.is_active&&(0,ae.jsx)("span",{className:Ee,children:s("ticket_status.attendee_status_unassigned")}),(0,ae.jsxs)("span",{className:"ticketNo___a2iM9",children:[s("ticket_status.ticket_no"),":"," ",(0,ae.jsx)(Oe,{number:t.number,copy:!0,truncated:!0})]})]}),(0,ae.jsxs)(c.Grid,{container:!0,children:[(0,ae.jsx)(c.Grid,{container:!0,direction:"row",xs:12,lg:6,alignItems:"center",item:!0,children:(0,ae.jsx)(Ae,{ticket:t})}),(0,ae.jsx)(c.Grid,{padding:2,xs:12,lg:6,container:!0,item:!0,children:(0,ae.jsx)(c.Grid,{item:!0,container:!0,align:"center",sx:{justifyContent:"space-between"},className:"ticketActionButtons___rpSMQ",children:t.is_active&&(t.owner?(0,ae.jsxs)(M(),{sx:{justifyContent:"space-between",width:"100%"},alignItems:"center",direction:"row",children:[(e=>"Incomplete"===e.owner?.status?(0,ae.jsx)(c.Button,{className:De,children:s("ticket_status.finish_ticket")}):"Complete"===e.owner?.status?(0,ae.jsx)(c.Button,{className:De,children:s("ticket_status.view_ticket")}):null)(t),(()=>{const e=(e=>e?e.reassign_ticket_till_date&&e.reassign_ticket_till_date<e.end_date?e.reassign_ticket_till_date:e.end_date:null)(r);return e>n?(0,ae.jsx)(c.Button,{className:"reassignButton___RojM5",children:s("ticket_status.reassign_ticket")}):""})()]}):(0,ae.jsx)(c.Button,{className:"assignTicketButton___zzLsc",children:s("ticket_status.assign_ticket")}))})})]})]},t.id)}He.propTypes={ticket:n().shape({id:n().number,owner:n().shape({email:n().string}),number:n().string,total_refunded_amount:n().number,ticket_type:n().shape({name:n().string})})};const Ve=He;function Ke(e){let{tickets:t,total:s,onPaginateClick:n,summit:i}=e;const{t:a}=(0,o.useTranslation)(),[l,d]=(0,r.useState)(3),u=t?.slice(0,l);return(0,ae.jsxs)(ae.Fragment,{children:[u?.map((e=>(0,ae.jsx)(Ve,{ticket:e,summit:i},e.id))),t?.length>l?(0,ae.jsx)(c.Button,{className:Ge,onClick:()=>{s>t.length&&n(),d(l+3)},children:a("orders-tickets.view_more")}):"",u?.length>3&&u?.length===s?(0,ae.jsx)(c.Button,{className:Ge,onClick:()=>d(3),children:a("orders-tickets.view_less")}):""]})}Ke.propTypes={tickets:n().arrayOf(Object)};const We=Ke,Ze=require("@mui/material/Divider");var Xe=e.n(Ze),Je="orderSummaryButton___uxjht";function Qe(e){let{order:t,summit:r,tickets:s}=e;const{t:n}=(0,o.useTranslation)(),{discountTotal:i,refundTotal:a,taxesTotal:l,amountTotal:d,ticketSummary:u}=(e=>{let{order:t,summit:r,tickets:s}=e;if(!t||!r||!s)return{};const{refunded_amount:n,discount_amount:i,taxes_amount:a,amount:o}=t,{ticket_types:c}=r,l=[];let d=0;const u={currency:t.currency};Object.keys(t.tickets_excerpt_by_ticket_type).map((e=>{const r=c.find((t=>t.name===e));return l.push({ticket_type_id:r.id,ticket_type:r,name:e,qty:t.tickets_excerpt_by_ticket_type[e]}),d+=r.cost*t.tickets_excerpt_by_ticket_type[e],l}));const m=W(d,u);return{discountTotal:W(i,u),refundTotal:W(n,u),taxesTotal:W(a,u),amountTotal:Object.prototype.hasOwnProperty.call(t,"amount")?W(o,u):W(m,u),ticketSummary:l}})({order:t,summit:r,tickets:s});return(0,ae.jsxs)(c.Box,{className:"orderSummaryTable___YDnxV",children:[u?.length>0&&(0,ae.jsx)(ae.Fragment,{children:u.map((e=>{const r=e.qty*(100*e.ticket_type.cost)/100;return(0,ae.jsxs)(c.Grid,{container:!0,sx:{pb:1},children:[(0,ae.jsx)(c.Grid,{xs:8,item:!0,children:(0,ae.jsxs)("span",{children:["x",e.qty," ",e.ticket_type.name]})}),(0,ae.jsx)(c.Grid,{xs:4,item:!0,align:"right",children:W(r,{currency:t.currency})})]},`tixorder_${e.ticket_type.created}`)}))}),t.discount_amount>0&&(0,ae.jsxs)(c.Grid,{container:!0,sx:{pb:1},children:[(0,ae.jsx)(c.Grid,{xs:8,item:!0,children:n("order_summary.discounts")}),(0,ae.jsxs)(c.Grid,{xs:4,item:!0,align:"right",children:["-",i]})]}),t.taxes_amount>0&&(0,ae.jsxs)(c.Grid,{container:!0,sx:{pb:1},children:[(0,ae.jsx)(c.Grid,{xs:8,item:!0,children:n("order_summary.taxes")}),(0,ae.jsx)(c.Grid,{xs:4,item:!0,align:"right",children:l})]}),"Paid"===t.status&&(0,ae.jsxs)(c.Grid,{container:!0,sx:{pb:1},children:[(0,ae.jsx)(c.Grid,{xs:8,item:!0,children:n("order_summary.amount_paid")}),(0,ae.jsxs)(c.Grid,{xs:4,item:!0,align:"right",children:["-",d]})]}),a>0&&(0,ae.jsxs)(c.Grid,{container:!0,sx:{pb:1},children:[(0,ae.jsx)(c.Grid,{xs:8,item:!0,children:n("order_summary.refunds")}),(0,ae.jsx)(c.Grid,{xs:4,item:!0,align:"right",children:a})]}),(0,ae.jsx)(Xe(),{}),(0,ae.jsxs)(c.Grid,{container:!0,sx:{pt:1,pb:1},children:[(0,ae.jsx)(c.Grid,{xs:8,item:!0,children:n("order_summary.total")}),(0,ae.jsx)(c.Grid,{xs:4,item:!0,align:"right",children:"Paid"===t.status?"$0.00":d})]})]})}Qe.propTypes={order:n().shape({currency:n().string,discount_amount:n().number,taxes_amount:n().number,status:n().string}),summit:n().object,tickets:n().arrayOf(Object)};const et=Qe;function tt(e){let{onRefundClick:t,onRefundDetailClick:r,onEmailSupportClick:s}=e;const{t:n}=(0,o.useTranslation)();return(0,ae.jsxs)(ae.Fragment,{children:[(0,ae.jsx)(c.Button,{className:Je,variant:"outlined",size:"large",onClick:t,children:n("order_summary.request_refund")}),(0,ae.jsx)(c.Button,{className:Je,variant:"outlined",size:"large",onClick:r,children:n("order_summary.refund_details")}),(0,ae.jsx)(c.Button,{className:Je,variant:"outlined",size:"large",onClick:s,children:n("order_info.email_support")})]})}tt.propTypes={onRefundClick:n().func,onRefundDetailClick:n().func,onEmailSupportClick:n().func};const rt=tt;function st(e){let{order:t,summit:r,tickets:s}=e;const{t:n}=(0,o.useTranslation)();return(0,ae.jsxs)(ae.Fragment,{children:[(0,ae.jsxs)(c.Box,{className:"orderSummaryWrapper___RwIER",sx:{pt:4,px:4},children:[(0,ae.jsx)("h3",{children:n("order_summary.order_summary")}),(0,ae.jsx)(c.Grid,{container:!0,children:(0,ae.jsx)(c.Grid,{xs:12,className:"orderSummaryPurchasedInfo____RBXE",sx:{pb:3},item:!0,children:(0,ae.jsx)(et,{order:t,summit:r,tickets:s})})})]}),(0,ae.jsx)(c.Box,{xs:12,sx:{pb:3},children:(0,ae.jsx)(rt,{onRefundClick:()=>{},onRefundDetailClick:()=>{},onEmailSupportClick:()=>{}})})]})}st.propTypes={order:n().object,summit:n().object,tickets:n().arrayOf(Object)};const nt=st;function it(e){const{children:t,value:r,index:s}=e;return(0,ae.jsx)("div",{role:"tabpanel",hidden:r!==s,id:`tabpanel-${s}`,"aria-labelledby":`tab-${s}`,children:r===s&&t})}const at=function(e){let{isMobile:t,summit:s,tickets:n,order:i,total:a,detailsRequired:l,onPaginateClick:d}=e;const{t:u}=(0,o.useTranslation)(),[m,_]=(0,r.useState)(0),p=()=>l&&(0,ae.jsxs)("span",{className:"detailsRequiredLabel___Y2kor",children:[(0,ae.jsx)(Ye(),{sx:{color:"#FF9800"}}),u("ticket_status.status_details_required")]});return t?(0,ae.jsxs)(c.Box,{className:Be,children:[(0,ae.jsx)(c.Box,{sx:{borderColor:"divider",pb:2},children:(0,ae.jsxs)(Pe(),{value:m,onChange:(e,t)=>{_(t)},textColor:"#000","aria-label":"Tickets & Summary",TabIndicatorProps:{style:{background:"#000"}},children:[(0,ae.jsx)(Fe(),{label:u("labels.tickets"),className:qe}),(0,ae.jsx)(Fe(),{label:u("labels.summary"),className:qe})]})}),p(),(0,ae.jsx)(it,{value:m,index:0,children:(0,ae.jsx)(We,{order:i,tickets:n,total:a,onPaginateClick:d,summit:s})}),(0,ae.jsx)(it,{value:m,index:1,children:(0,ae.jsx)(nt,{order:i,summit:s,tickets:n})})]}):(0,ae.jsxs)(ae.Fragment,{children:[(0,ae.jsx)(c.Grid,{item:!0,md:12,children:p()}),(0,ae.jsx)(c.Grid,{padding:2,item:!0,md:7,order:{md:1},className:Be,children:(0,ae.jsx)(We,{order:i,tickets:n,total:a,onPaginateClick:d,summit:s})}),(0,ae.jsx)(c.Grid,{padding:2,item:!0,md:5,order:{md:1},children:(0,ae.jsx)(nt,{order:i,summit:s,tickets:n})})]})};function ot(e){const{summit:t,order:s}=e,{t:n}=(0,o.useTranslation)(),a=(0,i.useDispatch)(),{per_page:l,last_page:d,memberOrders:u}=(0,i.useSelector)((e=>e.widgetState||{}),i.shallowEqual),m=(0,_e.useTheme)(),_=Ne()(m.breakpoints.down("lg")),[p,x]=(0,r.useState)(!1),h=s.memberTickets?.find((e=>"Incomplete"===e.owner?.status));(0,r.useEffect)((()=>{(async()=>{await a(q({orderId:s.id,current_page:d,perPage:l})).catch((e=>{console.log(e)}))})()}),[]);return(0,ae.jsxs)(ae.Fragment,{children:[(0,ae.jsxs)(c.Box,{sx:{padding:{xs:2,md:1,lg:0}},className:"orderTicketInfoContainer____p66V",children:[(0,ae.jsxs)("span",{className:"orderTicketInfo___gemqB",children:[n("orders.purchased"),": ",(j=s.created,k?K().tz(j*g,k).format("MMMM DD, YYYY"):K().unix(j).format("MMMM DD, YYYY"))," |"," ",n("order_summary.order_no"),":"," ",(0,ae.jsx)(Oe,{number:s.number,copy:!0,truncated:!0})]}),_&&(0,ae.jsx)(c.Button,{sx:{padding:0},className:"blackButton___l9hj9",onClick:()=>x(!p),children:n(p?"ticket_status.hide_tickets":"ticket_status.view_tickets")})]}),(0,ae.jsx)(c.Grid,{container:!0,rowSpacing:1,columnSpacing:{xs:1,sm:2,md:3},className:"orderTicketContainer___ZJLzk "+(_&&!p?"display_none___CqpL3":""),sx:{flexDirection:{md:"row",lg:"row"},padding:{xs:2,md:0,lg:0}},children:(0,ae.jsx)(at,{isMobile:_,summit:t,order:s,tickets:X(u,s.id),total:s.tickets_total,detailsRequired:h,onPaginateClick:()=>a(q({orderId:s.id,page:s.tickets_page_current+1,perPage:l,next:!0}))})},s.id)]});var j,k}ot.propTypes={summit:n().object,order:n().object};const ct=ot;var lt="summitTitleDate___Z19Pm";const dt=function(){const{t:e}=(0,o.useTranslation)(),t=(0,i.useDispatch)(),{summit:s,memberOrders:n,orders_current_page:a,orders_per_page:l,orders_total:d}=(0,i.useSelector)((e=>e.widgetState||{}),i.shallowEqual),[u,m]=(0,r.useState)(!0),[_,p]=(0,r.useState)(!1),[x,g]=(0,r.useState)({}),[j,k]=(0,r.useState)({});(0,r.useEffect)((()=>{(async()=>{t(R({page:a,perPage:l,next:_,filter:x,sort:j})).then((e=>{e.response?.data?.length>l&&n.length===d&&m(!1)}))})()}),[x,j,_]);const f=e=>{k({}),g(e)};return(0,ae.jsxs)(ae.Fragment,{children:[(0,ae.jsx)(ve,{onFilter:f,onSort:e=>{g({}),k({direction:e,name:"created"})},onSearch:f,onReset:()=>{k({}),g({}),p(!1),t((e=>{e((0,h.createAction)(b)({}))}))}}),(0,ae.jsxs)(c.Box,{className:"widgetHeader___yY5ge",sx:{padding:{xs:2,md:0,lg:0}},children:[(0,ae.jsx)("h2",{className:lt,children:s?.name}),(0,ae.jsx)("h2",{className:lt,children:Z(s)})]}),n.length?(0,ae.jsx)(I(),{dataLength:n.length,next:()=>p(!0),hasMore:u,scrollThreshold:1,children:n?.map((e=>(0,ae.jsx)(ct,{order:e,summit:s},e.id)))}):(0,ae.jsx)(c.Box,{className:"noOrdersFound___Aog2p",children:e("orders.no_orders")})]})};function ut(e){const{loginUrl:t,supportEmail:s,summit:n,apiBaseUrl:l,user:d,clientId:u}=e,{t:m}=(0,o.useTranslation)(),{store:_,persistor:p}=D({loginUrl:t,supportEmail:s,summit:n,user:d,apiBaseUrl:l,clientId:u});return(0,r.useEffect)((()=>{_.dispatch((e=>async t=>t((0,h.createAction)(w)(e)))(n))}),[n]),(0,r.useEffect)((()=>{_.dispatch((e=>t=>t((0,h.createAction)(v)(e)))(d))}),[d]),(0,ae.jsx)(i.Provider,{store:_,children:(0,ae.jsxs)(a.PersistGate,{onBeforeLift:()=>{new URLSearchParams(window.location.search).has("flushState")&&_.dispatch({type:y,payload:null})},loading:null,persistor:p,children:[(0,ae.jsx)(c.Box,{sx:{padding:{xs:2,md:0,lg:0}},children:(0,ae.jsx)("h3",{children:m("orders.title")})}),(0,ae.jsx)(dt,{loginUrl:t,supportEmail:s,summit:n,apiBaseUrl:l})]})})}ut.propTypes={loginUrl:n().string,supportEmail:n().string,summit:n().object,apiBaseUrl:n().string,user:n().object};const mt=ut;return t})()));
2
- //# sourceMappingURL=index.js.map
1
+ (function webpackUniversalModuleDefinition(root, factory) {
2
+ if(typeof exports === 'object' && typeof module === 'object')
3
+ module.exports = factory();
4
+ else if(typeof define === 'function' && define.amd)
5
+ define("my-orders-tickets-widget", [], factory);
6
+ else if(typeof exports === 'object')
7
+ exports["my-orders-tickets-widget"] = factory();
8
+ else
9
+ root["my-orders-tickets-widget"] = factory();
10
+ })(this, () => {
11
+ return /******/ (() => { // webpackBootstrap
12
+ /******/ "use strict";
13
+ /******/ var __webpack_modules__ = ({
14
+
15
+ /***/ "./src/actions.js":
16
+ /*!************************!*\
17
+ !*** ./src/actions.js ***!
18
+ \************************/
19
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
20
+
21
+ __webpack_require__.r(__webpack_exports__);
22
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
23
+ /* harmony export */ ASSIGN_TICKET: () => (/* binding */ ASSIGN_TICKET),
24
+ /* harmony export */ CLEAR_MARKETING_SETTINGS: () => (/* binding */ CLEAR_MARKETING_SETTINGS),
25
+ /* harmony export */ FILTER_USER_ORDERS: () => (/* binding */ FILTER_USER_ORDERS),
26
+ /* harmony export */ FILTER_VAR_DATE: () => (/* binding */ FILTER_VAR_DATE),
27
+ /* harmony export */ FILTER_VAR_ORDER_NUMBER: () => (/* binding */ FILTER_VAR_ORDER_NUMBER),
28
+ /* harmony export */ GET_MAIN_EXTRA_QUESTIONS: () => (/* binding */ GET_MAIN_EXTRA_QUESTIONS),
29
+ /* harmony export */ GET_ORDER_TICKET_DETAILS: () => (/* binding */ GET_ORDER_TICKET_DETAILS),
30
+ /* harmony export */ GET_TICKETS: () => (/* binding */ GET_TICKETS),
31
+ /* harmony export */ GET_TICKETS_BY_ORDER: () => (/* binding */ GET_TICKETS_BY_ORDER),
32
+ /* harmony export */ GET_TICKETS_BY_ORDER_ERROR: () => (/* binding */ GET_TICKETS_BY_ORDER_ERROR),
33
+ /* harmony export */ GET_TICKET_DETAILS: () => (/* binding */ GET_TICKET_DETAILS),
34
+ /* harmony export */ GET_USER_ORDERS: () => (/* binding */ GET_USER_ORDERS),
35
+ /* harmony export */ RECEIVE_MARKETING_SETTINGS: () => (/* binding */ RECEIVE_MARKETING_SETTINGS),
36
+ /* harmony export */ REFUND_ORDER: () => (/* binding */ REFUND_ORDER),
37
+ /* harmony export */ REFUND_TICKET: () => (/* binding */ REFUND_TICKET),
38
+ /* harmony export */ REMOVE_TICKET_ATTENDEE: () => (/* binding */ REMOVE_TICKET_ATTENDEE),
39
+ /* harmony export */ RESEND_NOTIFICATION: () => (/* binding */ RESEND_NOTIFICATION),
40
+ /* harmony export */ RESET_FILTER: () => (/* binding */ RESET_FILTER),
41
+ /* harmony export */ RESET_STATE: () => (/* binding */ RESET_STATE),
42
+ /* harmony export */ SET_ACTIVE_ORDER_ID: () => (/* binding */ SET_ACTIVE_ORDER_ID),
43
+ /* harmony export */ SET_SUMMIT: () => (/* binding */ SET_SUMMIT),
44
+ /* harmony export */ SET_USER: () => (/* binding */ SET_USER),
45
+ /* harmony export */ START_LOADING_IDP_PROFILE: () => (/* binding */ START_LOADING_IDP_PROFILE),
46
+ /* harmony export */ STOP_LOADING_IDP_PROFILE: () => (/* binding */ STOP_LOADING_IDP_PROFILE),
47
+ /* harmony export */ TICKET_ATTENDEE_KEYS: () => (/* binding */ TICKET_ATTENDEE_KEYS),
48
+ /* harmony export */ UPDATE_IDP_PROFILE: () => (/* binding */ UPDATE_IDP_PROFILE),
49
+ /* harmony export */ getSortDirection: () => (/* binding */ getSortDirection),
50
+ /* harmony export */ getTicketsByOrder: () => (/* binding */ getTicketsByOrder),
51
+ /* harmony export */ getUserOrders: () => (/* binding */ getUserOrders),
52
+ /* harmony export */ getUserTickets: () => (/* binding */ getUserTickets),
53
+ /* harmony export */ parseFilter: () => (/* binding */ parseFilter),
54
+ /* harmony export */ refundTicket: () => (/* binding */ refundTicket),
55
+ /* harmony export */ resendNotification: () => (/* binding */ resendNotification),
56
+ /* harmony export */ resetFilter: () => (/* binding */ resetFilter),
57
+ /* harmony export */ resetState: () => (/* binding */ resetState),
58
+ /* harmony export */ setActiveOrderId: () => (/* binding */ setActiveOrderId),
59
+ /* harmony export */ setSummit: () => (/* binding */ setSummit),
60
+ /* harmony export */ setUser: () => (/* binding */ setUser),
61
+ /* harmony export */ updateProfile: () => (/* binding */ updateProfile)
62
+ /* harmony export */ });
63
+ /* harmony import */ var openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! openstack-uicore-foundation/lib/security/methods */ "openstack-uicore-foundation/lib/security/methods");
64
+ /* harmony import */ var openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0__);
65
+ /* harmony import */ var openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! openstack-uicore-foundation/lib/utils/actions */ "openstack-uicore-foundation/lib/utils/actions");
66
+ /* harmony import */ var openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__);
67
+ /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/constants */ "./src/utils/constants.js");
68
+
69
+
70
+
71
+ const RESET_STATE = "RESET_STATE";
72
+ const RESET_FILTER = "RESET_FILTER";
73
+
74
+ // ORDERS CONSTS
75
+ const GET_USER_ORDERS = "GET_ORDERS";
76
+ const REFUND_ORDER = "REFUND_ORDER";
77
+ const SET_ACTIVE_ORDER_ID = "SET_ACTIVE_ORDER_ID";
78
+ const FILTER_USER_ORDERS = "FILTER_USER_ORDERS";
79
+
80
+ // TICKETS CONSTS
81
+ const GET_TICKETS = "GET_TICKETS";
82
+ const ASSIGN_TICKET = "ASSIGN_TICKET";
83
+ const REMOVE_TICKET_ATTENDEE = "REMOVE_TICKET_ATTENDEE";
84
+ const REFUND_TICKET = "REFUND_TICKET";
85
+ const RESEND_NOTIFICATION = "RESEND_NOTIFICATION";
86
+ const GET_TICKETS_BY_ORDER = "GET_TICKETS_BY_ORDER";
87
+ const GET_TICKETS_BY_ORDER_ERROR = "GET_TICKETS_BY_ORDER_ERROR";
88
+ const GET_ORDER_TICKET_DETAILS = "GET_ORDER_TICKET_DETAILS";
89
+ const GET_TICKET_DETAILS = "GET_TICKET_DETAILS";
90
+ const TICKET_ATTENDEE_KEYS = {
91
+ email: "attendee_email",
92
+ firstName: "attendee_first_name",
93
+ lastName: "attendee_last_name",
94
+ company: "attendee_company",
95
+ disclaimerAccepted: "disclaimer_accepted",
96
+ extraQuestions: "extra_questions"
97
+ };
98
+
99
+ // USER CONTS
100
+ const START_LOADING_IDP_PROFILE = "START_LOADING_IDP_PROFILE";
101
+ const STOP_LOADING_IDP_PROFILE = "STOP_LOADING_IDP_PROFILE";
102
+ const UPDATE_IDP_PROFILE = "UPDATE_IDP_PROFILE";
103
+ const SET_USER = "SET_USER";
104
+
105
+ // SUMMIT CONSTS
106
+ const SET_SUMMIT = "SET_SUMMIT";
107
+ const GET_MAIN_EXTRA_QUESTIONS = "GET_MAIN_EXTRA_QUESTIONS";
108
+ const RECEIVE_MARKETING_SETTINGS = "RECEIVE_MARKETING_SETTINGS";
109
+ const CLEAR_MARKETING_SETTINGS = "CLEAR_MARKETING_SETTINGS";
110
+ const resetState = () => dispatch => {
111
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(RESET_STATE)({}));
112
+ };
113
+ const resetFilter = () => dispatch => {
114
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(RESET_FILTER)({}));
115
+ };
116
+
117
+ // FILTER / SORT CONSTANTS
118
+ const FILTER_VAR_DATE = "FILTER_VAR_DATE";
119
+ const FILTER_VAR_ORDER_NUMBER = "FILTER_VAR_ORDER_NUMBER";
120
+
121
+ // FILTER/SORT ACTIONS
122
+ const parseFilter = filterObj => {
123
+ const filter = [];
124
+ if (filterObj.type === FILTER_VAR_DATE) {
125
+ filter.push(`${filterObj.name}[]${filterObj.lower}&&${filterObj.upper}`);
126
+ }
127
+ if (filterObj.type === FILTER_VAR_ORDER_NUMBER) {
128
+ filter.push(`${filterObj.name}=@${filterObj.value}`);
129
+ }
130
+ return filter;
131
+ };
132
+ const getSortDirection = direction => direction === "asc" ? "+" : "-";
133
+
134
+ // ORDERS ACTIONS
135
+ const getUserOrders = _ref => {
136
+ let {
137
+ page = _utils_constants__WEBPACK_IMPORTED_MODULE_2__.FIRST_PAGE,
138
+ perPage = _utils_constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_ITEMS_PER_PAGE,
139
+ filter = {},
140
+ sort = {},
141
+ next = false
142
+ } = _ref;
143
+ return async (dispatch, getState, _ref2) => {
144
+ let {
145
+ apiBaseUrl
146
+ } = _ref2;
147
+ const {
148
+ widgetState: {
149
+ summit
150
+ }
151
+ } = getState();
152
+ const accessToken = await (0,openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0__.getAccessToken)();
153
+ if (!accessToken) return Promise.reject();
154
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
155
+ const params = {
156
+ access_token: accessToken,
157
+ order: "-id",
158
+ "filter[]": ["status==Paid"],
159
+ relations: "none",
160
+ page: next ? page + _utils_constants__WEBPACK_IMPORTED_MODULE_2__.ONE_PAGE_NEXT : page,
161
+ per_page: perPage
162
+ };
163
+ if (Object.keys(filter).length > 0) {
164
+ const filters = parseFilter(filter);
165
+ params["filter[]"] = [...params["filter[]"], ...filters];
166
+ }
167
+ if (Object.keys(sort).length > 0) {
168
+ params.order = `${getSortDirection(sort.direction)}${sort.name}`;
169
+ }
170
+ return (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.getRequest)(null, (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(GET_USER_ORDERS), `${apiBaseUrl}/api/v1/summits/${summit.id}/orders/me`, openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.authErrorHandler)(params)(dispatch).then(payload => {
171
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
172
+ return payload;
173
+ }).catch(e => {
174
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
175
+ return e;
176
+ });
177
+ };
178
+ };
179
+ const setActiveOrderId = orderId => async dispatch => dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(SET_ACTIVE_ORDER_ID)(orderId));
180
+
181
+ // USER ACTIONS
182
+ const setUser = user => dispatch => dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(SET_USER)(user));
183
+ const updateProfile = profile => async (dispatch, _ref3) => {
184
+ let {
185
+ idpBaseUrl
186
+ } = _ref3;
187
+ const accessToken = await (0,openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0__.getAccessToken)();
188
+ if (!accessToken) return null;
189
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
190
+ const params = {
191
+ access_token: accessToken
192
+ };
193
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(START_LOADING_IDP_PROFILE)());
194
+ return (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.putRequest)(null, (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(UPDATE_IDP_PROFILE),
195
+ // TODO: need IDP_BASE_URL
196
+ `${idpBaseUrl}/api/v1/users/me`, profile, openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.authErrorHandler)(params)(dispatch).then(payload => payload).catch(() => dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(STOP_LOADING_IDP_PROFILE)()));
197
+ };
198
+
199
+ // TICKET ACTIONS
200
+
201
+ const getUserTickets = _ref4 => {
202
+ let {
203
+ page = _utils_constants__WEBPACK_IMPORTED_MODULE_2__.FIRST_PAGE,
204
+ perPage = _utils_constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_ITEMS_PER_PAGE
205
+ } = _ref4;
206
+ return async (dispatch, getState, _ref5) => {
207
+ let {
208
+ apiBaseUrl
209
+ } = _ref5;
210
+ const {
211
+ userState: {
212
+ userProfile
213
+ },
214
+ summit
215
+ } = getState();
216
+ if (!summit) return Promise.reject();
217
+ const accessToken = await (0,openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0__.getAccessToken)();
218
+ if (!accessToken) return Promise.reject();
219
+ if (!userProfile.id) return Promise.reject();
220
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
221
+ const params = {
222
+ access_token: accessToken,
223
+ filter: "status==Paid",
224
+ expand: "order, owner, ticket_type",
225
+ order: "-id",
226
+ fields: "order.id,order.owner_first_name,order.owner_last_name,order.owner_email,owner.first_name,owner.last_name,owner.status",
227
+ relations: "none",
228
+ page,
229
+ per_page: perPage
230
+ };
231
+ return (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.getRequest)(null, (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(GET_TICKETS), `${apiBaseUrl}/api/v1/summits/${summit.id}/orders/all/tickets/me`, openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.authErrorHandler)(params)(dispatch).then(() => {
232
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
233
+ }).catch(e => {
234
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
235
+ return e;
236
+ });
237
+ };
238
+ };
239
+ const getTicketsByOrder = _ref6 => {
240
+ let {
241
+ orderId,
242
+ page = _utils_constants__WEBPACK_IMPORTED_MODULE_2__.FIRST_PAGE,
243
+ perPage = _utils_constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_ITEMS_PER_PAGE
244
+ } = _ref6;
245
+ return async (dispatch, getState, _ref7) => {
246
+ let {
247
+ apiBaseUrl
248
+ } = _ref7;
249
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
250
+ const accessToken = await (0,openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0__.getAccessToken)();
251
+ if (!accessToken) return null;
252
+ const params = {
253
+ access_token: accessToken,
254
+ expand: "refund_requests,owner,owner.extra_questions,badge,badge.features,ticket_type",
255
+ order: "+id",
256
+ page,
257
+ per_page: perPage
258
+ };
259
+ return (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.getRequest)(null, (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(GET_TICKETS_BY_ORDER), `${apiBaseUrl}/api/v1/summits/all/orders/${orderId}/tickets`, openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.authErrorHandler)(params)(dispatch).then(payload => {
260
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
261
+ return payload;
262
+ }).catch(e => {
263
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
264
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(GET_TICKETS_BY_ORDER_ERROR));
265
+ return e;
266
+ });
267
+ };
268
+ };
269
+ const resendNotification = ticket => async (dispatch, _ref8) => {
270
+ let {
271
+ apiBaseUrl
272
+ } = _ref8;
273
+ const accessToken = await (0,openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0__.getAccessToken)();
274
+ if (!accessToken) return null;
275
+ const {
276
+ message
277
+ } = ticket;
278
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
279
+ const orderId = ticket.order ? ticket.order.id : ticket.order_id;
280
+ const params = {
281
+ access_token: accessToken
282
+ };
283
+ return (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.putRequest)(null, (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(RESEND_NOTIFICATION), `${apiBaseUrl}/api/v1/summits/all/orders/${orderId}/tickets/${ticket.id}/attendee/reinvite`, {
284
+ message
285
+ }, openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.authErrorHandler)(params)(dispatch).then(() => {
286
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
287
+ }).catch(e => {
288
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
289
+ return e;
290
+ });
291
+ };
292
+ const refundTicket = _ref9 => {
293
+ let {
294
+ ticket
295
+ } = _ref9;
296
+ return async (dispatch, getState, _ref10) => {
297
+ let {
298
+ apiBaseUrl
299
+ } = _ref10;
300
+ const accessToken = await (0,openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0__.getAccessToken)();
301
+ if (!accessToken) return null;
302
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
303
+ const {
304
+ orderState: {
305
+ current_page: orderPage
306
+ },
307
+ ticketState: {
308
+ current_page: ticketPage
309
+ }
310
+ } = getState();
311
+ const orderId = ticket.order ? ticket.order.id : ticket.order_id;
312
+ const params = {
313
+ access_token: accessToken
314
+ };
315
+ return (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.deleteRequest)(null, (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(REFUND_TICKET), `${apiBaseUrl}/api/v1/summits/all/orders/${orderId}/tickets/${ticket.id}/refund`, {}, openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.authErrorHandler)(params)(dispatch).then(payload => {
316
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
317
+ if (ticket.order_id) {
318
+ dispatch(getUserOrders({
319
+ page: orderPage
320
+ }));
321
+ } else {
322
+ dispatch(getUserTickets({
323
+ page: ticketPage
324
+ }));
325
+ }
326
+ return payload;
327
+ }).catch(e => {
328
+ dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
329
+ throw e;
330
+ });
331
+ };
332
+ };
333
+
334
+ // SUMMIT ACTIONS
335
+ const setSummit = summit => async dispatch => dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(SET_SUMMIT)(summit));
336
+
337
+ /***/ }),
338
+
339
+ /***/ "./src/components/FilterSortSearch/Datepicker.js":
340
+ /*!*******************************************************!*\
341
+ !*** ./src/components/FilterSortSearch/Datepicker.js ***!
342
+ \*******************************************************/
343
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
344
+
345
+ __webpack_require__.r(__webpack_exports__);
346
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
347
+ /* harmony export */ "default": () => (/* binding */ BasicDatePicker)
348
+ /* harmony export */ });
349
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
350
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
351
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
352
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
353
+ /* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material/Stack */ "@mui/material/Stack");
354
+ /* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_2__);
355
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-i18next */ "react-i18next");
356
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_3__);
357
+ /* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dayjs */ "dayjs");
358
+ /* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(dayjs__WEBPACK_IMPORTED_MODULE_4__);
359
+ /* harmony import */ var _mui_x_date_pickers_AdapterDayjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/x-date-pickers/AdapterDayjs */ "@mui/x-date-pickers/AdapterDayjs");
360
+ /* harmony import */ var _mui_x_date_pickers_AdapterDayjs__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_mui_x_date_pickers_AdapterDayjs__WEBPACK_IMPORTED_MODULE_5__);
361
+ /* harmony import */ var _mui_x_date_pickers_LocalizationProvider__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/x-date-pickers/LocalizationProvider */ "@mui/x-date-pickers/LocalizationProvider");
362
+ /* harmony import */ var _mui_x_date_pickers_LocalizationProvider__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_mui_x_date_pickers_LocalizationProvider__WEBPACK_IMPORTED_MODULE_6__);
363
+ /* harmony import */ var _mui_x_date_pickers_DatePicker__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/x-date-pickers/DatePicker */ "@mui/x-date-pickers/DatePicker");
364
+ /* harmony import */ var _mui_x_date_pickers_DatePicker__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_mui_x_date_pickers_DatePicker__WEBPACK_IMPORTED_MODULE_7__);
365
+ /* harmony import */ var _mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/icons-material/Close */ "@mui/icons-material/Close");
366
+ /* harmony import */ var _mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_8__);
367
+ /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../actions */ "./src/actions.js");
368
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
369
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/FilterSortSearch/styles.module.scss");
370
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
371
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__);
372
+
373
+
374
+
375
+
376
+
377
+
378
+
379
+
380
+
381
+
382
+
383
+
384
+
385
+ function BasicDatePicker(_ref) {
386
+ let {
387
+ onFilter,
388
+ onReset
389
+ } = _ref;
390
+ const {
391
+ t
392
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_3__.useTranslation)();
393
+ const now = dayjs__WEBPACK_IMPORTED_MODULE_4___default()();
394
+ const [dateValue, setDateValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(now);
395
+ const onDateChange = val => {
396
+ setDateValue(val);
397
+ const date = new Date(val.$d);
398
+ const {
399
+ lower,
400
+ upper
401
+ } = (0,_utils__WEBPACK_IMPORTED_MODULE_10__.getEpochLowerUpperInSeconds)(date);
402
+ onFilter({
403
+ type: _actions__WEBPACK_IMPORTED_MODULE_9__.FILTER_VAR_DATE,
404
+ name: "created",
405
+ date,
406
+ lower,
407
+ upper
408
+ });
409
+ };
410
+ const onResetAction = () => {
411
+ onReset();
412
+ setDateValue(now);
413
+ };
414
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.Fragment, {
415
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("div", {
416
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.filterDateLabel,
417
+ children: t("filter.purchased_on")
418
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_2___default()), {
419
+ alignItems: "center",
420
+ direction: "row",
421
+ sx: {
422
+ pt: 2,
423
+ pb: 2
424
+ },
425
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.datePickerContainer,
426
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)((_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_8___default()), {
427
+ fontSize: "large",
428
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.datepickerClose,
429
+ onClick: onResetAction
430
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_mui_x_date_pickers_LocalizationProvider__WEBPACK_IMPORTED_MODULE_6__.LocalizationProvider, {
431
+ dateAdapter: _mui_x_date_pickers_AdapterDayjs__WEBPACK_IMPORTED_MODULE_5__.AdapterDayjs,
432
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_mui_x_date_pickers_DatePicker__WEBPACK_IMPORTED_MODULE_7__.DatePicker, {
433
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.calendarDisplay,
434
+ onChange: onDateChange,
435
+ value: dateValue
436
+ })
437
+ })]
438
+ })]
439
+ });
440
+ }
441
+ BasicDatePicker.propTypes = {
442
+ onFilter: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
443
+ onReset: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
444
+ };
445
+
446
+ /***/ }),
447
+
448
+ /***/ "./src/components/FilterSortSearch/Filter.js":
449
+ /*!***************************************************!*\
450
+ !*** ./src/components/FilterSortSearch/Filter.js ***!
451
+ \***************************************************/
452
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
453
+
454
+ __webpack_require__.r(__webpack_exports__);
455
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
456
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
457
+ /* harmony export */ });
458
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
459
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
460
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
461
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
462
+ /* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material/Stack */ "@mui/material/Stack");
463
+ /* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_2__);
464
+ /* harmony import */ var _mui_icons_material_FilterList__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/icons-material/FilterList */ "@mui/icons-material/FilterList");
465
+ /* harmony import */ var _mui_icons_material_FilterList__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_FilterList__WEBPACK_IMPORTED_MODULE_3__);
466
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ "@mui/material");
467
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_4__);
468
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-i18next */ "react-i18next");
469
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_5__);
470
+ /* harmony import */ var _Datepicker__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Datepicker */ "./src/components/FilterSortSearch/Datepicker.js");
471
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/FilterSortSearch/styles.module.scss");
472
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
473
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__);
474
+
475
+
476
+
477
+
478
+
479
+
480
+
481
+
482
+
483
+ function Filter(_ref) {
484
+ let {
485
+ onFilter,
486
+ onReset
487
+ } = _ref;
488
+ const {
489
+ t
490
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_5__.useTranslation)();
491
+ const [showFilterList, setShowFilterList] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
492
+ const [showDatepicker, setShowDatepicker] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
493
+ const [filterNumActive, setFilterNumActive] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
494
+ const filterRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
495
+ const handleFilterClickOutside = event => {
496
+ if (filterRef.current && !filterRef.current.contains(event.target)) {
497
+ if (showFilterList) {
498
+ setShowFilterList(false);
499
+ setShowDatepicker(false);
500
+ }
501
+ }
502
+ };
503
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
504
+ document.addEventListener("click", handleFilterClickOutside, false);
505
+ return () => {
506
+ document.removeEventListener("click", handleFilterClickOutside, false);
507
+ };
508
+ }, [showFilterList]);
509
+ const toggle = () => {
510
+ setShowFilterList(!showFilterList);
511
+ setShowDatepicker(!showDatepicker);
512
+ };
513
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_4__.Box, {
514
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.filterContainer,
515
+ ref: filterRef,
516
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_2___default()), {
517
+ alignItems: "center",
518
+ direction: "row",
519
+ sx: {
520
+ pt: 2,
521
+ pb: 2
522
+ },
523
+ onClick: toggle,
524
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)((_mui_icons_material_FilterList__WEBPACK_IMPORTED_MODULE_3___default()), {
525
+ fontSize: "large",
526
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.filterIcon
527
+ }), filterNumActive && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)("div", {
528
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.filterNumActive,
529
+ children: "1"
530
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)("span", {
531
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.filterLabel,
532
+ children: t("filter.filter")
533
+ })]
534
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_4__.Box, {
535
+ className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.filterListContainer} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.container} ${showFilterList ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.showDatePicker : ""}`,
536
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Datepicker__WEBPACK_IMPORTED_MODULE_6__["default"], {
537
+ onReset: () => {
538
+ onReset();
539
+ setFilterNumActive(false);
540
+ toggle();
541
+ },
542
+ onFilter: filter => {
543
+ onFilter(filter);
544
+ setFilterNumActive(true);
545
+ }
546
+ })
547
+ })]
548
+ });
549
+ }
550
+ Filter.propTypes = {
551
+ onFilter: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
552
+ };
553
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Filter);
554
+
555
+ /***/ }),
556
+
557
+ /***/ "./src/components/FilterSortSearch/Search.js":
558
+ /*!***************************************************!*\
559
+ !*** ./src/components/FilterSortSearch/Search.js ***!
560
+ \***************************************************/
561
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
562
+
563
+ __webpack_require__.r(__webpack_exports__);
564
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
565
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
566
+ /* harmony export */ });
567
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
568
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
569
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
570
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
571
+ /* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material/styles */ "@mui/material/styles");
572
+ /* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material_styles__WEBPACK_IMPORTED_MODULE_2__);
573
+ /* harmony import */ var _mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/icons-material/Search */ "@mui/icons-material/Search");
574
+ /* harmony import */ var _mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_3__);
575
+ /* harmony import */ var _mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/icons-material/Close */ "@mui/icons-material/Close");
576
+ /* harmony import */ var _mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_4__);
577
+ /* harmony import */ var _mui_material_InputBase__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material/InputBase */ "@mui/material/InputBase");
578
+ /* harmony import */ var _mui_material_InputBase__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_mui_material_InputBase__WEBPACK_IMPORTED_MODULE_5__);
579
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ "@mui/material");
580
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_6__);
581
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-i18next */ "react-i18next");
582
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_7__);
583
+ /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../actions */ "./src/actions.js");
584
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
585
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__);
586
+
587
+
588
+
589
+
590
+
591
+
592
+
593
+
594
+
595
+
596
+ const SearchContainer = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_2__.styled)("div")(() => ({
597
+ position: "relative",
598
+ marginRight: "0",
599
+ marginLeft: "0",
600
+ width: "100%",
601
+ display: "block"
602
+ }));
603
+ const SearchIconWrapper = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_2__.styled)("div")(() => ({
604
+ height: "100%",
605
+ position: "absolute",
606
+ display: "flex",
607
+ alignItems: "center",
608
+ justifyContent: "center"
609
+ }));
610
+ const StyledInputBase = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_2__.styled)((_mui_material_InputBase__WEBPACK_IMPORTED_MODULE_5___default()))(() => ({
611
+ color: "inherit",
612
+ borderBottom: "1px solid rgba(0, 0, 0, 0.42)",
613
+ paddingLeft: "25px",
614
+ paddingRight: "25px",
615
+ fontSize: "1em"
616
+ }));
617
+ const CloseIconWrapper = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_2__.styled)((_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_4___default()))(() => ({
618
+ padding: "2px",
619
+ fontSize: "1.5em",
620
+ height: "100%",
621
+ position: "absolute",
622
+ top: "0",
623
+ right: "0",
624
+ display: "flex",
625
+ alignItems: "center",
626
+ justifyContent: "center",
627
+ cursor: "pointer",
628
+ zIndex: "1000"
629
+ }));
630
+ function Search(_ref) {
631
+ let {
632
+ onSearch,
633
+ onReset
634
+ } = _ref;
635
+ const {
636
+ t
637
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_7__.useTranslation)();
638
+ const [showClose, setShowClose] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
639
+ const [searchValue, setSearchValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)("");
640
+ const onKeyDown = event => {
641
+ const {
642
+ key,
643
+ nativeEvent: {
644
+ target: {
645
+ value
646
+ }
647
+ }
648
+ } = event;
649
+ if (key === "Enter") {
650
+ onSearch({
651
+ value,
652
+ name: "number",
653
+ type: _actions__WEBPACK_IMPORTED_MODULE_8__.FILTER_VAR_ORDER_NUMBER
654
+ });
655
+ setShowClose(true);
656
+ }
657
+ };
658
+ const resetSearch = () => {
659
+ setSearchValue("");
660
+ setShowClose(false);
661
+ onReset();
662
+ };
663
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_6__.Box, {
664
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(SearchContainer, {
665
+ children: [showClose && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(CloseIconWrapper, {
666
+ onClick: resetSearch,
667
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)((_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_4___default()), {})
668
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(SearchIconWrapper, {
669
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)((_mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_3___default()), {})
670
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(StyledInputBase, {
671
+ placeholder: t("order_search.order_number"),
672
+ inputProps: {
673
+ "aria-label": "search"
674
+ },
675
+ value: searchValue,
676
+ onChange: e => setSearchValue(e.target.value),
677
+ onKeyDown: onKeyDown
678
+ })]
679
+ })
680
+ });
681
+ }
682
+ Search.propTypes = {
683
+ onSearch: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
684
+ onReset: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
685
+ };
686
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Search);
687
+
688
+ /***/ }),
689
+
690
+ /***/ "./src/components/FilterSortSearch/Sort.js":
691
+ /*!*************************************************!*\
692
+ !*** ./src/components/FilterSortSearch/Sort.js ***!
693
+ \*************************************************/
694
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
695
+
696
+ __webpack_require__.r(__webpack_exports__);
697
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
698
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
699
+ /* harmony export */ });
700
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
701
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
702
+ /* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/material/Stack */ "@mui/material/Stack");
703
+ /* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_1__);
704
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
705
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
706
+ /* harmony import */ var _mui_icons_material_ImportExport__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/icons-material/ImportExport */ "@mui/icons-material/ImportExport");
707
+ /* harmony import */ var _mui_icons_material_ImportExport__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_ImportExport__WEBPACK_IMPORTED_MODULE_3__);
708
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-i18next */ "react-i18next");
709
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_4__);
710
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/FilterSortSearch/styles.module.scss");
711
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
712
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__);
713
+
714
+
715
+
716
+
717
+
718
+
719
+
720
+ function Sort(_ref) {
721
+ let {
722
+ onSort
723
+ } = _ref;
724
+ const {
725
+ t
726
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_4__.useTranslation)();
727
+ const [showSort, setShowSort] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
728
+ const sortRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
729
+ const handleSortClickOutside = event => {
730
+ if (sortRef.current && !sortRef.current.contains(event.target)) {
731
+ setShowSort(false);
732
+ }
733
+ };
734
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
735
+ document.addEventListener("click", handleSortClickOutside, false);
736
+ return () => {
737
+ document.removeEventListener("click", handleSortClickOutside, false);
738
+ };
739
+ }, [showSort]);
740
+ const toggle = () => {
741
+ setShowSort(!showSort);
742
+ };
743
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
744
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.sortContainer,
745
+ onClick: toggle,
746
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_1___default()), {
747
+ ref: sortRef,
748
+ alignItems: "center",
749
+ direction: "row",
750
+ sx: {
751
+ pt: 2,
752
+ pb: 2
753
+ },
754
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)((_mui_icons_material_ImportExport__WEBPACK_IMPORTED_MODULE_3___default()), {
755
+ fontSize: "large",
756
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.sortIcon
757
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("span", {
758
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.sortLabel,
759
+ children: t("sort.sort")
760
+ })]
761
+ }), showSort && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
762
+ className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.sortListContainer} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.container}`,
763
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Button, {
764
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.label,
765
+ onClick: () => onSort("desc"),
766
+ children: t("sort.new_first")
767
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Button, {
768
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.label,
769
+ onClick: () => onSort("asc"),
770
+ children: t("sort.old_first")
771
+ })]
772
+ })]
773
+ });
774
+ }
775
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Sort);
776
+
777
+ /***/ }),
778
+
779
+ /***/ "./src/components/FilterSortSearch/index.js":
780
+ /*!**************************************************!*\
781
+ !*** ./src/components/FilterSortSearch/index.js ***!
782
+ \**************************************************/
783
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
784
+
785
+ __webpack_require__.r(__webpack_exports__);
786
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
787
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
788
+ /* harmony export */ });
789
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
790
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
791
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
792
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
793
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
794
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
795
+ /* harmony import */ var _Filter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Filter */ "./src/components/FilterSortSearch/Filter.js");
796
+ /* harmony import */ var _Sort__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Sort */ "./src/components/FilterSortSearch/Sort.js");
797
+ /* harmony import */ var _Search__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Search */ "./src/components/FilterSortSearch/Search.js");
798
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/FilterSortSearch/styles.module.scss");
799
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
800
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
801
+
802
+
803
+
804
+
805
+
806
+
807
+
808
+
809
+ function FilterSortSearch(_ref) {
810
+ let {
811
+ onFilter,
812
+ onSort,
813
+ onSearch,
814
+ onReset
815
+ } = _ref;
816
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
817
+ container: true,
818
+ justify: "flex-end",
819
+ alignItems: "center",
820
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
821
+ item: true,
822
+ xs: 6,
823
+ container: true,
824
+ padding: 1,
825
+ gap: 2,
826
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.filterSortContainer,
827
+ sx: {
828
+ pt: 2,
829
+ pb: 2
830
+ },
831
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
832
+ item: true,
833
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_Filter__WEBPACK_IMPORTED_MODULE_3__["default"], {
834
+ onFilter: onFilter,
835
+ onReset: onReset
836
+ })
837
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
838
+ item: true,
839
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_Sort__WEBPACK_IMPORTED_MODULE_4__["default"], {
840
+ onSort: onSort
841
+ })
842
+ })]
843
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
844
+ item: true,
845
+ xs: 6,
846
+ container: true,
847
+ justifyContent: "flex-end",
848
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_Search__WEBPACK_IMPORTED_MODULE_5__["default"], {
849
+ onSearch: onSearch,
850
+ onReset: onReset
851
+ })
852
+ })]
853
+ });
854
+ }
855
+ FilterSortSearch.propTypes = {
856
+ onFilter: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
857
+ onSort: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
858
+ onSearch: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
859
+ onReset: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
860
+ };
861
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FilterSortSearch);
862
+
863
+ /***/ }),
864
+
865
+ /***/ "./src/components/MyOrdersTickets.js":
866
+ /*!*******************************************!*\
867
+ !*** ./src/components/MyOrdersTickets.js ***!
868
+ \*******************************************/
869
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
870
+
871
+ __webpack_require__.r(__webpack_exports__);
872
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
873
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
874
+ /* harmony export */ });
875
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
876
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
877
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ "react-redux");
878
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);
879
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
880
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
881
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
882
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
883
+ /* harmony import */ var react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-infinite-scroll-component */ "react-infinite-scroll-component");
884
+ /* harmony import */ var react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_4__);
885
+ /* harmony import */ var _FilterSortSearch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./FilterSortSearch */ "./src/components/FilterSortSearch/index.js");
886
+ /* harmony import */ var _OrdersList__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./OrdersList */ "./src/components/OrdersList/index.js");
887
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ "./src/utils/index.js");
888
+ /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../actions */ "./src/actions.js");
889
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/styles.module.scss");
890
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
891
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__);
892
+
893
+
894
+
895
+
896
+
897
+
898
+
899
+
900
+
901
+
902
+
903
+ function MyOrdersTickets() {
904
+ const {
905
+ t
906
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
907
+ const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useDispatch)();
908
+ const {
909
+ summit,
910
+ memberOrders,
911
+ orders_current_page,
912
+ orders_per_page,
913
+ orders_total
914
+ } = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useSelector)(state => state.widgetState || {}, react_redux__WEBPACK_IMPORTED_MODULE_1__.shallowEqual);
915
+ const [hasMore, setHasMore] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);
916
+ const [searchNext, setSearchNext] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
917
+ const [filter, setFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});
918
+ const [sort, setSort] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});
919
+ const onReset = () => {
920
+ setSort({});
921
+ setFilter({});
922
+ setSearchNext(false);
923
+ dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_8__.resetFilter)());
924
+ };
925
+ const fetchData = async () => {
926
+ dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_8__.getUserOrders)({
927
+ page: orders_current_page,
928
+ perPage: orders_per_page,
929
+ next: searchNext,
930
+ filter,
931
+ sort
932
+ })).then(res => {
933
+ if (res.response?.data?.length > orders_per_page && memberOrders.length === orders_total) setHasMore(false);
934
+ });
935
+ };
936
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
937
+ fetchData();
938
+ }, [filter, sort, searchNext]);
939
+ const onFilter = filter => {
940
+ setSort({});
941
+ setFilter(filter);
942
+ };
943
+ const onSort = direction => {
944
+ setFilter({});
945
+ setSort({
946
+ direction,
947
+ name: "created"
948
+ });
949
+ };
950
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.Fragment, {
951
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_FilterSortSearch__WEBPACK_IMPORTED_MODULE_5__["default"], {
952
+ onFilter: onFilter,
953
+ onSort: onSort,
954
+ onSearch: onFilter,
955
+ onReset: onReset
956
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
957
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__.widgetHeader,
958
+ sx: {
959
+ padding: {
960
+ xs: 2,
961
+ md: 0,
962
+ lg: 0
963
+ }
964
+ },
965
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)("h2", {
966
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__.summitTitleDate,
967
+ children: summit?.name
968
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)("h2", {
969
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__.summitTitleDate,
970
+ children: (0,_utils__WEBPACK_IMPORTED_MODULE_7__.getSummitFormattedDate)(summit)
971
+ })]
972
+ }), memberOrders.length ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)((react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_4___default()), {
973
+ dataLength: memberOrders.length,
974
+ next: () => setSearchNext(true),
975
+ hasMore: hasMore,
976
+ scrollThreshold: 1,
977
+ children: memberOrders?.map(order => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_OrdersList__WEBPACK_IMPORTED_MODULE_6__["default"], {
978
+ order: order,
979
+ summit: summit
980
+ }, order.id))
981
+ }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
982
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__.noOrdersFound,
983
+ children: t("orders.no_orders")
984
+ })]
985
+ });
986
+ }
987
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MyOrdersTickets);
988
+
989
+ /***/ }),
990
+
991
+ /***/ "./src/components/OrderSummary/OrderSummaryTable.js":
992
+ /*!**********************************************************!*\
993
+ !*** ./src/components/OrderSummary/OrderSummaryTable.js ***!
994
+ \**********************************************************/
995
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
996
+
997
+ __webpack_require__.r(__webpack_exports__);
998
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
999
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1000
+ /* harmony export */ });
1001
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1002
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1003
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
1004
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
1005
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
1006
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
1007
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
1008
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
1009
+ /* harmony import */ var _mui_material_Divider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material/Divider */ "@mui/material/Divider");
1010
+ /* harmony import */ var _mui_material_Divider__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_mui_material_Divider__WEBPACK_IMPORTED_MODULE_4__);
1011
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
1012
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrderSummary/styles.module.scss");
1013
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1014
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
1015
+
1016
+
1017
+
1018
+
1019
+
1020
+
1021
+
1022
+
1023
+ function OrderSummaryTable(_ref) {
1024
+ let {
1025
+ order,
1026
+ summit,
1027
+ tickets
1028
+ } = _ref;
1029
+ const {
1030
+ t
1031
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
1032
+ const {
1033
+ discountTotal,
1034
+ refundTotal,
1035
+ taxesTotal,
1036
+ amountTotal,
1037
+ ticketSummary
1038
+ } = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.calculateOrderTotals)({
1039
+ order,
1040
+ summit,
1041
+ tickets
1042
+ });
1043
+ const hundred = 100;
1044
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
1045
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.orderSummaryTable,
1046
+ children: [ticketSummary?.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.Fragment, {
1047
+ children: ticketSummary.map(ticket => {
1048
+ const ticketTotal = ticket.qty * (ticket.ticket_type.cost * hundred) / hundred;
1049
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1050
+ container: true,
1051
+ sx: {
1052
+ pb: 1
1053
+ },
1054
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1055
+ xs: 8,
1056
+ item: true,
1057
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)("span", {
1058
+ children: ["x", ticket.qty, " ", ticket.ticket_type.name]
1059
+ })
1060
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1061
+ xs: 4,
1062
+ item: true,
1063
+ align: "right",
1064
+ children: (0,_utils__WEBPACK_IMPORTED_MODULE_5__.formatCurrency)(ticketTotal, {
1065
+ currency: order.currency
1066
+ })
1067
+ })]
1068
+ }, `tixorder_${ticket.ticket_type.created}`);
1069
+ })
1070
+ }), order.discount_amount > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1071
+ container: true,
1072
+ sx: {
1073
+ pb: 1
1074
+ },
1075
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1076
+ xs: 8,
1077
+ item: true,
1078
+ children: t("order_summary.discounts")
1079
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1080
+ xs: 4,
1081
+ item: true,
1082
+ align: "right",
1083
+ children: ["-", discountTotal]
1084
+ })]
1085
+ }), order.taxes_amount > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1086
+ container: true,
1087
+ sx: {
1088
+ pb: 1
1089
+ },
1090
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1091
+ xs: 8,
1092
+ item: true,
1093
+ children: t("order_summary.taxes")
1094
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1095
+ xs: 4,
1096
+ item: true,
1097
+ align: "right",
1098
+ children: taxesTotal
1099
+ })]
1100
+ }), order.status === "Paid" && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1101
+ container: true,
1102
+ sx: {
1103
+ pb: 1
1104
+ },
1105
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1106
+ xs: 8,
1107
+ item: true,
1108
+ children: t("order_summary.amount_paid")
1109
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1110
+ xs: 4,
1111
+ item: true,
1112
+ align: "right",
1113
+ children: ["-", amountTotal]
1114
+ })]
1115
+ }), refundTotal > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1116
+ container: true,
1117
+ sx: {
1118
+ pb: 1
1119
+ },
1120
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1121
+ xs: 8,
1122
+ item: true,
1123
+ children: t("order_summary.refunds")
1124
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1125
+ xs: 4,
1126
+ item: true,
1127
+ align: "right",
1128
+ children: refundTotal
1129
+ })]
1130
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)((_mui_material_Divider__WEBPACK_IMPORTED_MODULE_4___default()), {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1131
+ container: true,
1132
+ sx: {
1133
+ pt: 1,
1134
+ pb: 1
1135
+ },
1136
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1137
+ xs: 8,
1138
+ item: true,
1139
+ children: t("order_summary.total")
1140
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1141
+ xs: 4,
1142
+ item: true,
1143
+ align: "right",
1144
+ children: order.status === "Paid" ? "$0.00" : amountTotal
1145
+ })]
1146
+ })]
1147
+ });
1148
+ }
1149
+ OrderSummaryTable.propTypes = {
1150
+ order: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
1151
+ currency: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
1152
+ discount_amount: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number),
1153
+ taxes_amount: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number),
1154
+ status: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
1155
+ }),
1156
+ summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
1157
+ tickets: prop_types__WEBPACK_IMPORTED_MODULE_1___default().arrayOf(Object)
1158
+ };
1159
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrderSummaryTable);
1160
+
1161
+ /***/ }),
1162
+
1163
+ /***/ "./src/components/OrderSummary/RefundEmailSupport.js":
1164
+ /*!***********************************************************!*\
1165
+ !*** ./src/components/OrderSummary/RefundEmailSupport.js ***!
1166
+ \***********************************************************/
1167
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1168
+
1169
+ __webpack_require__.r(__webpack_exports__);
1170
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1171
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1172
+ /* harmony export */ });
1173
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1174
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1175
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
1176
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
1177
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
1178
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
1179
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
1180
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
1181
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrderSummary/styles.module.scss");
1182
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1183
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__);
1184
+
1185
+
1186
+
1187
+
1188
+
1189
+
1190
+ function RefundEmailSupport(_ref) {
1191
+ let {
1192
+ onRefundClick,
1193
+ onRefundDetailClick,
1194
+ onEmailSupportClick
1195
+ } = _ref;
1196
+ const {
1197
+ t
1198
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
1199
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.Fragment, {
1200
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1201
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.orderSummaryButton,
1202
+ variant: "outlined",
1203
+ size: "large",
1204
+ onClick: onRefundClick,
1205
+ children: t("order_summary.request_refund")
1206
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1207
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.orderSummaryButton,
1208
+ variant: "outlined",
1209
+ size: "large",
1210
+ onClick: onRefundDetailClick,
1211
+ children: t("order_summary.refund_details")
1212
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1213
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.orderSummaryButton,
1214
+ variant: "outlined",
1215
+ size: "large",
1216
+ onClick: onEmailSupportClick,
1217
+ children: t("order_info.email_support")
1218
+ })]
1219
+ });
1220
+ }
1221
+ RefundEmailSupport.propTypes = {
1222
+ onRefundClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
1223
+ onRefundDetailClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
1224
+ onEmailSupportClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
1225
+ };
1226
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RefundEmailSupport);
1227
+
1228
+ /***/ }),
1229
+
1230
+ /***/ "./src/components/OrderSummary/index.js":
1231
+ /*!**********************************************!*\
1232
+ !*** ./src/components/OrderSummary/index.js ***!
1233
+ \**********************************************/
1234
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1235
+
1236
+ __webpack_require__.r(__webpack_exports__);
1237
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1238
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1239
+ /* harmony export */ });
1240
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1241
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1242
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
1243
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
1244
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
1245
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
1246
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-i18next */ "react-i18next");
1247
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_3__);
1248
+ /* harmony import */ var _OrderSummaryTable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./OrderSummaryTable */ "./src/components/OrderSummary/OrderSummaryTable.js");
1249
+ /* harmony import */ var _RefundEmailSupport__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./RefundEmailSupport */ "./src/components/OrderSummary/RefundEmailSupport.js");
1250
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrderSummary/styles.module.scss");
1251
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1252
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
1253
+
1254
+
1255
+
1256
+
1257
+
1258
+
1259
+
1260
+
1261
+ function OrderSummary(_ref) {
1262
+ let {
1263
+ order,
1264
+ summit,
1265
+ tickets
1266
+ } = _ref;
1267
+ const {
1268
+ t
1269
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_3__.useTranslation)();
1270
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.Fragment, {
1271
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
1272
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.orderSummaryWrapper,
1273
+ sx: {
1274
+ pt: 4,
1275
+ px: 4
1276
+ },
1277
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)("h3", {
1278
+ children: t("order_summary.order_summary")
1279
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
1280
+ container: true,
1281
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
1282
+ xs: 12,
1283
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.orderSummaryPurchasedInfo,
1284
+ sx: {
1285
+ pb: 3
1286
+ },
1287
+ item: true,
1288
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_OrderSummaryTable__WEBPACK_IMPORTED_MODULE_4__["default"], {
1289
+ order: order,
1290
+ summit: summit,
1291
+ tickets: tickets
1292
+ })
1293
+ })
1294
+ })]
1295
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
1296
+ xs: 12,
1297
+ sx: {
1298
+ pb: 3
1299
+ },
1300
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_RefundEmailSupport__WEBPACK_IMPORTED_MODULE_5__["default"], {
1301
+ onRefundClick: () => {},
1302
+ onRefundDetailClick: () => {},
1303
+ onEmailSupportClick: () => {}
1304
+ })
1305
+ })]
1306
+ });
1307
+ }
1308
+ OrderSummary.propTypes = {
1309
+ order: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
1310
+ summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
1311
+ tickets: prop_types__WEBPACK_IMPORTED_MODULE_1___default().arrayOf(Object)
1312
+ };
1313
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrderSummary);
1314
+
1315
+ /***/ }),
1316
+
1317
+ /***/ "./src/components/OrdersList/OrderListItem.js":
1318
+ /*!****************************************************!*\
1319
+ !*** ./src/components/OrdersList/OrderListItem.js ***!
1320
+ \****************************************************/
1321
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1322
+
1323
+ __webpack_require__.r(__webpack_exports__);
1324
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1325
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1326
+ /* harmony export */ });
1327
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1328
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1329
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
1330
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
1331
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
1332
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
1333
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
1334
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
1335
+ /* harmony import */ var _OrderListTickets__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./OrderListTickets */ "./src/components/OrdersList/OrderListTickets.js");
1336
+ /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
1337
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrdersList/styles.module.scss");
1338
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1339
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
1340
+
1341
+
1342
+
1343
+
1344
+
1345
+
1346
+
1347
+
1348
+ function OrderListItem(_ref) {
1349
+ let {
1350
+ tickets,
1351
+ total,
1352
+ onPaginateClick,
1353
+ summit
1354
+ } = _ref;
1355
+ const {
1356
+ t
1357
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
1358
+ const [itemsToDisplay, setItemsToDisplay] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(_utils_constants__WEBPACK_IMPORTED_MODULE_5__.PAGINATION_DISPLAY_COUNT);
1359
+ const slicedTickets = tickets?.slice(0, itemsToDisplay);
1360
+ const onViewMore = () => {
1361
+ if (total > tickets.length) {
1362
+ onPaginateClick();
1363
+ }
1364
+ setItemsToDisplay(itemsToDisplay + _utils_constants__WEBPACK_IMPORTED_MODULE_5__.PAGINATION_DISPLAY_COUNT);
1365
+ };
1366
+ const onViewLess = () => setItemsToDisplay(_utils_constants__WEBPACK_IMPORTED_MODULE_5__.PAGINATION_DISPLAY_COUNT);
1367
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.Fragment, {
1368
+ children: [slicedTickets?.map(ticket => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_OrderListTickets__WEBPACK_IMPORTED_MODULE_4__["default"], {
1369
+ ticket: ticket,
1370
+ summit: summit
1371
+ }, ticket.id)), tickets?.length > itemsToDisplay ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1372
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.viewMoreButton,
1373
+ onClick: onViewMore,
1374
+ children: t("orders-tickets.view_more")
1375
+ }) : "", slicedTickets?.length > _utils_constants__WEBPACK_IMPORTED_MODULE_5__.PAGINATION_DISPLAY_COUNT && slicedTickets?.length === total ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1376
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.viewMoreButton,
1377
+ onClick: onViewLess,
1378
+ children: t("orders-tickets.view_less")
1379
+ }) : ""]
1380
+ });
1381
+ }
1382
+ OrderListItem.propTypes = {
1383
+ tickets: prop_types__WEBPACK_IMPORTED_MODULE_1___default().arrayOf(Object)
1384
+ };
1385
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrderListItem);
1386
+
1387
+ /***/ }),
1388
+
1389
+ /***/ "./src/components/OrdersList/OrderListTickets.js":
1390
+ /*!*******************************************************!*\
1391
+ !*** ./src/components/OrdersList/OrderListTickets.js ***!
1392
+ \*******************************************************/
1393
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1394
+
1395
+ __webpack_require__.r(__webpack_exports__);
1396
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1397
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1398
+ /* harmony export */ });
1399
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1400
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1401
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
1402
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
1403
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
1404
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
1405
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
1406
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
1407
+ /* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material/Stack */ "@mui/material/Stack");
1408
+ /* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_4__);
1409
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrdersList/styles.module.scss");
1410
+ /* harmony import */ var _TicketStatus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../TicketStatus */ "./src/components/TicketStatus/index.js");
1411
+ /* harmony import */ var _OrderNumber__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./OrderNumber */ "./src/components/OrdersList/OrderNumber.js");
1412
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
1413
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1414
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__);
1415
+
1416
+
1417
+
1418
+
1419
+
1420
+
1421
+
1422
+
1423
+
1424
+
1425
+ function OrderListTickets(_ref) {
1426
+ let {
1427
+ ticket,
1428
+ summit
1429
+ } = _ref;
1430
+ const {
1431
+ t
1432
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
1433
+ const now = (0,_utils__WEBPACK_IMPORTED_MODULE_8__.useNow)();
1434
+ const getActiveButtonActions = ticket => {
1435
+ if (ticket.owner?.status === "Incomplete") {
1436
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1437
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.viewFinishTicketButton,
1438
+ children: t("ticket_status.finish_ticket")
1439
+ });
1440
+ }
1441
+ if (ticket.owner?.status === "Complete") {
1442
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1443
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.viewFinishTicketButton,
1444
+ children: t("ticket_status.view_ticket")
1445
+ });
1446
+ }
1447
+ return null;
1448
+ };
1449
+ const showReassignButton = () => {
1450
+ const reassignDate = (0,_utils__WEBPACK_IMPORTED_MODULE_8__.getSummitReassignDate)(summit);
1451
+ const isReassignable = reassignDate > now;
1452
+ return isReassignable ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1453
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.reassignButton,
1454
+ children: t("ticket_status.reassign_ticket")
1455
+ }) : "";
1456
+ };
1457
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1458
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.orderWrapper,
1459
+ container: true,
1460
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1461
+ xs: 7,
1462
+ padding: 2,
1463
+ item: true,
1464
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.ticketTicketType,
1465
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("h4", {
1466
+ children: ticket.ticket_type?.name
1467
+ })
1468
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1469
+ xs: 5,
1470
+ padding: 2,
1471
+ item: true
1472
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1473
+ xs: 12,
1474
+ sx: {
1475
+ px: 2,
1476
+ pb: 2
1477
+ },
1478
+ item: true,
1479
+ children: [ticket.owner?.email ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.Fragment, {
1480
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
1481
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.label,
1482
+ children: [t("ticket_status.assigned_to"), ":"]
1483
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
1484
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.ticketOwnerEmail,
1485
+ children: ticket.owner?.email
1486
+ })]
1487
+ }) : ticket.is_active && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("span", {
1488
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.ticketOwnerEmail,
1489
+ children: t("ticket_status.attendee_status_unassigned")
1490
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("span", {
1491
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.ticketNo,
1492
+ children: [t("ticket_status.ticket_no"), ":", " ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_OrderNumber__WEBPACK_IMPORTED_MODULE_7__["default"], {
1493
+ number: ticket.number,
1494
+ copy: true,
1495
+ truncated: true
1496
+ })]
1497
+ })]
1498
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1499
+ container: true,
1500
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1501
+ container: true,
1502
+ direction: "row",
1503
+ xs: 12,
1504
+ lg: 6,
1505
+ alignItems: "center",
1506
+ item: true,
1507
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_TicketStatus__WEBPACK_IMPORTED_MODULE_6__["default"], {
1508
+ ticket: ticket
1509
+ })
1510
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1511
+ padding: 2,
1512
+ xs: 12,
1513
+ lg: 6,
1514
+ container: true,
1515
+ item: true,
1516
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1517
+ item: true,
1518
+ container: true,
1519
+ align: "center",
1520
+ sx: {
1521
+ justifyContent: "space-between"
1522
+ },
1523
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.ticketActionButtons,
1524
+ children: ticket.is_active && (ticket.owner ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_4___default()), {
1525
+ sx: {
1526
+ justifyContent: "space-between",
1527
+ width: "100%"
1528
+ },
1529
+ alignItems: "center",
1530
+ direction: "row",
1531
+ children: [getActiveButtonActions(ticket), showReassignButton()]
1532
+ }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1533
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.assignTicketButton,
1534
+ children: t("ticket_status.assign_ticket")
1535
+ }))
1536
+ })
1537
+ })]
1538
+ })]
1539
+ }, ticket.id);
1540
+ }
1541
+ OrderListTickets.propTypes = {
1542
+ ticket: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
1543
+ id: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number),
1544
+ owner: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
1545
+ email: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
1546
+ }),
1547
+ number: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
1548
+ total_refunded_amount: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number),
1549
+ ticket_type: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
1550
+ name: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
1551
+ })
1552
+ })
1553
+ };
1554
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrderListTickets);
1555
+
1556
+ /***/ }),
1557
+
1558
+ /***/ "./src/components/OrdersList/OrderNumber.js":
1559
+ /*!**************************************************!*\
1560
+ !*** ./src/components/OrdersList/OrderNumber.js ***!
1561
+ \**************************************************/
1562
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1563
+
1564
+ __webpack_require__.r(__webpack_exports__);
1565
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1566
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1567
+ /* harmony export */ });
1568
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1569
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1570
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
1571
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
1572
+ /* harmony import */ var _mui_icons_material_ContentCopy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/icons-material/ContentCopy */ "@mui/icons-material/ContentCopy");
1573
+ /* harmony import */ var _mui_icons_material_ContentCopy__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_ContentCopy__WEBPACK_IMPORTED_MODULE_2__);
1574
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrdersList/styles.module.scss");
1575
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1576
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__);
1577
+
1578
+
1579
+
1580
+
1581
+
1582
+ function OrderNumber(_ref) {
1583
+ let {
1584
+ number,
1585
+ copy = false,
1586
+ truncated = false
1587
+ } = _ref;
1588
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", {
1589
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__.orderTicketNoContainer,
1590
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("span", {
1591
+ className: truncated && _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__.orderTicketNumberTruncated,
1592
+ children: number
1593
+ }), copy && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)((_mui_icons_material_ContentCopy__WEBPACK_IMPORTED_MODULE_2___default()), {
1594
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__.copyIcon,
1595
+ onClick: () => navigator.clipboard.writeText(number)
1596
+ })]
1597
+ });
1598
+ }
1599
+ OrderNumber.propTypes = {
1600
+ number: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
1601
+ copy: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool)
1602
+ };
1603
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrderNumber);
1604
+
1605
+ /***/ }),
1606
+
1607
+ /***/ "./src/components/OrdersList/OrdersListDesktopMobile.js":
1608
+ /*!**************************************************************!*\
1609
+ !*** ./src/components/OrdersList/OrdersListDesktopMobile.js ***!
1610
+ \**************************************************************/
1611
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1612
+
1613
+ __webpack_require__.r(__webpack_exports__);
1614
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1615
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1616
+ /* harmony export */ });
1617
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1618
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1619
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ "react-i18next");
1620
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_1__);
1621
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
1622
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
1623
+ /* harmony import */ var _mui_material_Tabs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material/Tabs */ "@mui/material/Tabs");
1624
+ /* harmony import */ var _mui_material_Tabs__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material_Tabs__WEBPACK_IMPORTED_MODULE_3__);
1625
+ /* harmony import */ var _mui_material_Tab__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material/Tab */ "@mui/material/Tab");
1626
+ /* harmony import */ var _mui_material_Tab__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_mui_material_Tab__WEBPACK_IMPORTED_MODULE_4__);
1627
+ /* harmony import */ var _mui_icons_material_Error__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/icons-material/Error */ "@mui/icons-material/Error");
1628
+ /* harmony import */ var _mui_icons_material_Error__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_Error__WEBPACK_IMPORTED_MODULE_5__);
1629
+ /* harmony import */ var _OrderListItem__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./OrderListItem */ "./src/components/OrdersList/OrderListItem.js");
1630
+ /* harmony import */ var _OrderSummary__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../OrderSummary */ "./src/components/OrderSummary/index.js");
1631
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrdersList/styles.module.scss");
1632
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1633
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__);
1634
+
1635
+
1636
+
1637
+
1638
+
1639
+
1640
+
1641
+
1642
+
1643
+
1644
+ function TabPanel(props) {
1645
+ const {
1646
+ children,
1647
+ value,
1648
+ index
1649
+ } = props;
1650
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("div", {
1651
+ role: "tabpanel",
1652
+ hidden: value !== index,
1653
+ id: `tabpanel-${index}`,
1654
+ "aria-labelledby": `tab-${index}`,
1655
+ children: value === index && children
1656
+ });
1657
+ }
1658
+ function OrdersListDesktopMobile(_ref) {
1659
+ let {
1660
+ isMobile,
1661
+ summit,
1662
+ tickets,
1663
+ order,
1664
+ total,
1665
+ detailsRequired,
1666
+ onPaginateClick
1667
+ } = _ref;
1668
+ const {
1669
+ t
1670
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)();
1671
+ const [value, setValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);
1672
+ const handleChange = (_, newValue) => {
1673
+ setValue(newValue);
1674
+ };
1675
+ const moreDetails = () => detailsRequired && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("span", {
1676
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__.detailsRequiredLabel,
1677
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)((_mui_icons_material_Error__WEBPACK_IMPORTED_MODULE_5___default()), {
1678
+ sx: {
1679
+ color: "#FF9800"
1680
+ }
1681
+ }), t("ticket_status.status_details_required")]
1682
+ });
1683
+ return isMobile ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
1684
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__.ticketListContainer,
1685
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
1686
+ sx: {
1687
+ borderColor: "divider",
1688
+ pb: 2
1689
+ },
1690
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)((_mui_material_Tabs__WEBPACK_IMPORTED_MODULE_3___default()), {
1691
+ value: value,
1692
+ onChange: handleChange,
1693
+ textColor: "#000",
1694
+ "aria-label": "Tickets & Summary",
1695
+ TabIndicatorProps: {
1696
+ style: {
1697
+ background: "#000"
1698
+ }
1699
+ },
1700
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)((_mui_material_Tab__WEBPACK_IMPORTED_MODULE_4___default()), {
1701
+ label: t("labels.tickets"),
1702
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__.tabButtons
1703
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)((_mui_material_Tab__WEBPACK_IMPORTED_MODULE_4___default()), {
1704
+ label: t("labels.summary"),
1705
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__.tabButtons
1706
+ })]
1707
+ })
1708
+ }), moreDetails(), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(TabPanel, {
1709
+ value: value,
1710
+ index: 0,
1711
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_OrderListItem__WEBPACK_IMPORTED_MODULE_6__["default"], {
1712
+ order: order,
1713
+ tickets: tickets,
1714
+ total: total,
1715
+ onPaginateClick: onPaginateClick,
1716
+ summit: summit
1717
+ })
1718
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(TabPanel, {
1719
+ value: value,
1720
+ index: 1,
1721
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_OrderSummary__WEBPACK_IMPORTED_MODULE_7__["default"], {
1722
+ order: order,
1723
+ summit: summit,
1724
+ tickets: tickets
1725
+ })
1726
+ })]
1727
+ }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.Fragment, {
1728
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
1729
+ item: true,
1730
+ md: 12,
1731
+ children: moreDetails()
1732
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
1733
+ padding: 2,
1734
+ item: true,
1735
+ md: 7,
1736
+ order: {
1737
+ md: 1
1738
+ },
1739
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__.ticketListContainer,
1740
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_OrderListItem__WEBPACK_IMPORTED_MODULE_6__["default"], {
1741
+ order: order,
1742
+ tickets: tickets,
1743
+ total: total,
1744
+ onPaginateClick: onPaginateClick,
1745
+ summit: summit
1746
+ })
1747
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
1748
+ padding: 2,
1749
+ item: true,
1750
+ md: 5,
1751
+ order: {
1752
+ md: 1
1753
+ },
1754
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_OrderSummary__WEBPACK_IMPORTED_MODULE_7__["default"], {
1755
+ order: order,
1756
+ summit: summit,
1757
+ tickets: tickets
1758
+ })
1759
+ })]
1760
+ });
1761
+ }
1762
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrdersListDesktopMobile);
1763
+
1764
+ /***/ }),
1765
+
1766
+ /***/ "./src/components/OrdersList/index.js":
1767
+ /*!********************************************!*\
1768
+ !*** ./src/components/OrdersList/index.js ***!
1769
+ \********************************************/
1770
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1771
+
1772
+ __webpack_require__.r(__webpack_exports__);
1773
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1774
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1775
+ /* harmony export */ });
1776
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1777
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1778
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
1779
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
1780
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-redux */ "react-redux");
1781
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_2__);
1782
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-i18next */ "react-i18next");
1783
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_3__);
1784
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ "@mui/material");
1785
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_4__);
1786
+ /* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material/styles */ "@mui/material/styles");
1787
+ /* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_mui_material_styles__WEBPACK_IMPORTED_MODULE_5__);
1788
+ /* harmony import */ var _mui_material_useMediaQuery__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material/useMediaQuery */ "@mui/material/useMediaQuery");
1789
+ /* harmony import */ var _mui_material_useMediaQuery__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_mui_material_useMediaQuery__WEBPACK_IMPORTED_MODULE_6__);
1790
+ /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../actions */ "./src/actions.js");
1791
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
1792
+ /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
1793
+ /* harmony import */ var _OrderNumber__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./OrderNumber */ "./src/components/OrdersList/OrderNumber.js");
1794
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrdersList/styles.module.scss");
1795
+ /* harmony import */ var _OrdersListDesktopMobile__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./OrdersListDesktopMobile */ "./src/components/OrdersList/OrdersListDesktopMobile.js");
1796
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1797
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__);
1798
+
1799
+
1800
+
1801
+
1802
+
1803
+
1804
+
1805
+
1806
+
1807
+
1808
+
1809
+
1810
+
1811
+
1812
+ function OrdersList(props) {
1813
+ const {
1814
+ summit,
1815
+ order
1816
+ } = props;
1817
+ const {
1818
+ t
1819
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_3__.useTranslation)();
1820
+ const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useDispatch)();
1821
+ const {
1822
+ per_page,
1823
+ last_page,
1824
+ memberOrders
1825
+ } = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useSelector)(state => state.widgetState || {}, react_redux__WEBPACK_IMPORTED_MODULE_2__.shallowEqual);
1826
+ const theme = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_5__.useTheme)();
1827
+ const isMobile = _mui_material_useMediaQuery__WEBPACK_IMPORTED_MODULE_6___default()(theme.breakpoints.down("lg"));
1828
+ const [isMobileViewable, setMobileViewable] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
1829
+ const detailsRequired = order.memberTickets?.find(ticket => ticket.owner?.status === "Incomplete");
1830
+ const fetchTicketsByOrder = async () => {
1831
+ await dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_7__.getTicketsByOrder)({
1832
+ orderId: order.id,
1833
+ current_page: last_page,
1834
+ perPage: per_page
1835
+ })).catch(e => {
1836
+ console.log(e);
1837
+ });
1838
+ };
1839
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
1840
+ fetchTicketsByOrder();
1841
+ }, []);
1842
+ const onPaginateClick = () => dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_7__.getTicketsByOrder)({
1843
+ orderId: order.id,
1844
+ page: order.tickets_page_current + _utils_constants__WEBPACK_IMPORTED_MODULE_9__.ONE_PAGE_NEXT,
1845
+ perPage: per_page,
1846
+ next: true
1847
+ }));
1848
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.Fragment, {
1849
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_4__.Box, {
1850
+ sx: {
1851
+ padding: {
1852
+ xs: 2,
1853
+ md: 1,
1854
+ lg: 0
1855
+ }
1856
+ },
1857
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.orderTicketInfoContainer,
1858
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)("span", {
1859
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.orderTicketInfo,
1860
+ children: [t("orders.purchased"), ": ", (0,_utils__WEBPACK_IMPORTED_MODULE_8__.getFormattedDate)(order.created), " |", " ", t("order_summary.order_no"), ":", " ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_OrderNumber__WEBPACK_IMPORTED_MODULE_10__["default"], {
1861
+ number: order.number,
1862
+ copy: true,
1863
+ truncated: true
1864
+ })]
1865
+ }), isMobile && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_4__.Button, {
1866
+ sx: {
1867
+ padding: 0
1868
+ },
1869
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.blackButton,
1870
+ onClick: () => setMobileViewable(!isMobileViewable),
1871
+ children: isMobileViewable ? t("ticket_status.hide_tickets") : t("ticket_status.view_tickets")
1872
+ })]
1873
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_4__.Grid, {
1874
+ container: true,
1875
+ rowSpacing: 1,
1876
+ columnSpacing: {
1877
+ xs: 1,
1878
+ sm: 2,
1879
+ md: 3
1880
+ },
1881
+ className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.orderTicketContainer} ${isMobile && !isMobileViewable ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.display_none : ""}`,
1882
+ sx: {
1883
+ flexDirection: {
1884
+ md: "row",
1885
+ lg: "row"
1886
+ },
1887
+ padding: {
1888
+ xs: 2,
1889
+ md: 0,
1890
+ lg: 0
1891
+ }
1892
+ },
1893
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_OrdersListDesktopMobile__WEBPACK_IMPORTED_MODULE_12__["default"], {
1894
+ isMobile: isMobile,
1895
+ summit: summit,
1896
+ order: order,
1897
+ tickets: (0,_utils__WEBPACK_IMPORTED_MODULE_8__.getOrderTickets)(memberOrders, order.id),
1898
+ total: order.tickets_total,
1899
+ detailsRequired: detailsRequired,
1900
+ onPaginateClick: onPaginateClick
1901
+ })
1902
+ }, order.id)]
1903
+ });
1904
+ }
1905
+ OrdersList.propTypes = {
1906
+ summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
1907
+ order: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object)
1908
+ };
1909
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrdersList);
1910
+
1911
+ /***/ }),
1912
+
1913
+ /***/ "./src/components/TicketStatus/index.js":
1914
+ /*!**********************************************!*\
1915
+ !*** ./src/components/TicketStatus/index.js ***!
1916
+ \**********************************************/
1917
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1918
+
1919
+ __webpack_require__.r(__webpack_exports__);
1920
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1921
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1922
+ /* harmony export */ });
1923
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1924
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1925
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
1926
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
1927
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
1928
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
1929
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
1930
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
1931
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/TicketStatus/styles.module.scss");
1932
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1933
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__);
1934
+
1935
+
1936
+
1937
+
1938
+
1939
+
1940
+ function TicketStatus(_ref) {
1941
+ let {
1942
+ ticket
1943
+ } = _ref;
1944
+ const {
1945
+ t
1946
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
1947
+ const isActive = ticket.is_active;
1948
+ const refund_requests = ticket.refund_requests.find(r => r.status === "Requested");
1949
+ const ticket_status_incomplete = ticket.owner?.status === "Incomplete";
1950
+ const ticket_unassigned = ticket.owner_id === 0;
1951
+ const ticket_complete = ticket.owner && ticket.owner?.status === "Complete";
1952
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Container, {
1953
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.ticketStatusContainer,
1954
+ children: isActive ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.Fragment, {
1955
+ children: [refund_requests && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1956
+ className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonRefundRequested}`,
1957
+ children: t("ticket_status.status_refund_requested")
1958
+ }), ticket_status_incomplete && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1959
+ className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonIncomplete}`,
1960
+ children: t("ticket_status.status_incomplete")
1961
+ }), ticket_unassigned && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1962
+ className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonUnassigned}`,
1963
+ children: t("ticket_status.status_unassigned")
1964
+ }), ticket_complete && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1965
+ className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonComplete}`,
1966
+ children: t("ticket_status.status_complete")
1967
+ })]
1968
+ }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1969
+ className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonCancelled}`,
1970
+ children: t("ticket_status.status_cancelled")
1971
+ })
1972
+ });
1973
+ }
1974
+ TicketStatus.propTypes = {
1975
+ ticket: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
1976
+ owner: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
1977
+ status: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
1978
+ }),
1979
+ refund_requests: prop_types__WEBPACK_IMPORTED_MODULE_1___default().arrayOf(Object)
1980
+ })
1981
+ };
1982
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TicketStatus);
1983
+
1984
+ /***/ }),
1985
+
1986
+ /***/ "./src/reducer.js":
1987
+ /*!************************!*\
1988
+ !*** ./src/reducer.js ***!
1989
+ \************************/
1990
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1991
+
1992
+ __webpack_require__.r(__webpack_exports__);
1993
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1994
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1995
+ /* harmony export */ });
1996
+ /* harmony import */ var openstack_uicore_foundation_lib_security_actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! openstack-uicore-foundation/lib/security/actions */ "openstack-uicore-foundation/lib/security/actions");
1997
+ /* harmony import */ var openstack_uicore_foundation_lib_security_actions__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(openstack_uicore_foundation_lib_security_actions__WEBPACK_IMPORTED_MODULE_0__);
1998
+ /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./actions */ "./src/actions.js");
1999
+ /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/constants */ "./src/utils/constants.js");
2000
+ /**
2001
+ * Copyright 2024 OpenStack Foundation
2002
+ * Licensed under the Apache License, Version 2.0 (the "License");
2003
+ * you may not use this file except in compliance with the License.
2004
+ * You may obtain a copy of the License at
2005
+ * http://www.apache.org/licenses/LICENSE-2.0
2006
+ * Unless required by applicable law or agreed to in writing, software
2007
+ * distributed under the License is distributed on an "AS IS" BASIS,
2008
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2009
+ * See the License for the specific language governing permissions and
2010
+ * limitations under the License.
2011
+ * */
2012
+
2013
+
2014
+
2015
+ const DEFAULT_STATE = {
2016
+ summit: null,
2017
+ user: {},
2018
+ widgetLoading: false,
2019
+ memberOrders: [],
2020
+ errors: {},
2021
+ loading: false,
2022
+ isOrderLoading: false,
2023
+ orders_current_page: 1,
2024
+ orders_last_page: 1,
2025
+ orders_per_page: 5,
2026
+ orders_total: 0,
2027
+ ticket_current_page: 1,
2028
+ ticket_last_page: 1,
2029
+ ticket_per_page: 5,
2030
+ ticket_total: 0
2031
+ };
2032
+ const WidgetReducer = function () {
2033
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_STATE;
2034
+ let {
2035
+ type,
2036
+ payload
2037
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
2038
+ switch (type) {
2039
+ case openstack_uicore_foundation_lib_security_actions__WEBPACK_IMPORTED_MODULE_0__.LOGOUT_USER:
2040
+ case _actions__WEBPACK_IMPORTED_MODULE_1__.RESET_STATE:
2041
+ return DEFAULT_STATE;
2042
+ case _actions__WEBPACK_IMPORTED_MODULE_1__.RESET_FILTER:
2043
+ return {
2044
+ ...state,
2045
+ orders_current_page: 1,
2046
+ orders_last_page: 1
2047
+ };
2048
+ case _actions__WEBPACK_IMPORTED_MODULE_1__.SET_SUMMIT:
2049
+ return {
2050
+ ...state,
2051
+ summit: payload
2052
+ };
2053
+ case _actions__WEBPACK_IMPORTED_MODULE_1__.SET_USER:
2054
+ return {
2055
+ ...state,
2056
+ user: payload
2057
+ };
2058
+ case _actions__WEBPACK_IMPORTED_MODULE_1__.GET_USER_ORDERS:
2059
+ {
2060
+ const {
2061
+ memberOrders
2062
+ } = state;
2063
+ const {
2064
+ data,
2065
+ total,
2066
+ current_page
2067
+ } = payload.response;
2068
+ return {
2069
+ ...state,
2070
+ memberOrders: current_page === _utils_constants__WEBPACK_IMPORTED_MODULE_2__.FIRST_PAGE ? data : [...memberOrders, ...data],
2071
+ orders_total: total,
2072
+ orders_current_page: current_page
2073
+ };
2074
+ }
2075
+ case _actions__WEBPACK_IMPORTED_MODULE_1__.GET_TICKETS_BY_ORDER:
2076
+ {
2077
+ const {
2078
+ memberOrders
2079
+ } = state;
2080
+ const {
2081
+ data,
2082
+ total,
2083
+ current_page,
2084
+ last_page
2085
+ } = payload.response;
2086
+ const formerOrder = memberOrders.find(o => o.id === data[0]?.order_id);
2087
+ const updatedOrder = {
2088
+ ...formerOrder,
2089
+ memberTickets: current_page === _utils_constants__WEBPACK_IMPORTED_MODULE_2__.FIRST_PAGE ? data : [...formerOrder.memberTickets, ...data],
2090
+ tickets_page_current: current_page,
2091
+ tickets_page_last: last_page,
2092
+ tickets_total: total
2093
+ };
2094
+ return {
2095
+ ...state,
2096
+ memberOrders: memberOrders.map(mo => mo.id === updatedOrder.id ? updatedOrder : mo)
2097
+ };
2098
+ }
2099
+ default:
2100
+ return state;
2101
+ }
2102
+ };
2103
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WidgetReducer);
2104
+
2105
+ /***/ }),
2106
+
2107
+ /***/ "./src/store.js":
2108
+ /*!**********************!*\
2109
+ !*** ./src/store.js ***!
2110
+ \**********************/
2111
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2112
+
2113
+ __webpack_require__.r(__webpack_exports__);
2114
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2115
+ /* harmony export */ getStore: () => (/* binding */ getStore),
2116
+ /* harmony export */ useInitStore: () => (/* binding */ useInitStore)
2117
+ /* harmony export */ });
2118
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
2119
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
2120
+ /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @reduxjs/toolkit */ "@reduxjs/toolkit");
2121
+ /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__);
2122
+ /* harmony import */ var redux_persist__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! redux-persist */ "redux-persist");
2123
+ /* harmony import */ var redux_persist__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(redux_persist__WEBPACK_IMPORTED_MODULE_2__);
2124
+ /* harmony import */ var redux_persist_lib_storage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! redux-persist/lib/storage */ "redux-persist/lib/storage");
2125
+ /* harmony import */ var redux_persist_lib_storage__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(redux_persist_lib_storage__WEBPACK_IMPORTED_MODULE_3__);
2126
+ /* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! redux */ "redux");
2127
+ /* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(redux__WEBPACK_IMPORTED_MODULE_4__);
2128
+ /* harmony import */ var _reducer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./reducer */ "./src/reducer.js");
2129
+
2130
+
2131
+
2132
+
2133
+
2134
+
2135
+ const getStore = _ref => {
2136
+ let {
2137
+ clientId,
2138
+ loginUrl,
2139
+ summit,
2140
+ apiBaseUrl
2141
+ } = _ref;
2142
+ // to add other reducers later
2143
+ const reducers = (0,redux__WEBPACK_IMPORTED_MODULE_4__.combineReducers)({
2144
+ widgetState: _reducer__WEBPACK_IMPORTED_MODULE_5__["default"]
2145
+ });
2146
+ const store = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.configureStore)({
2147
+ reducer: (0,redux_persist__WEBPACK_IMPORTED_MODULE_2__.persistReducer)({
2148
+ key: `root_my_orders_tickets_${clientId}`,
2149
+ storage: (redux_persist_lib_storage__WEBPACK_IMPORTED_MODULE_3___default())
2150
+ }, reducers),
2151
+ middleware: getDefaultMiddleware => getDefaultMiddleware({
2152
+ thunk: {
2153
+ extraArgument: {
2154
+ clientId,
2155
+ apiBaseUrl,
2156
+ summit,
2157
+ loginUrl
2158
+ }
2159
+ },
2160
+ immutableCheck: false,
2161
+ serializableCheck: {
2162
+ ignoredActions: [redux_persist__WEBPACK_IMPORTED_MODULE_2__.FLUSH, redux_persist__WEBPACK_IMPORTED_MODULE_2__.REHYDRATE, redux_persist__WEBPACK_IMPORTED_MODULE_2__.PAUSE, redux_persist__WEBPACK_IMPORTED_MODULE_2__.PERSIST, redux_persist__WEBPACK_IMPORTED_MODULE_2__.PURGE, redux_persist__WEBPACK_IMPORTED_MODULE_2__.REGISTER]
2163
+ }
2164
+ })
2165
+ });
2166
+ return store;
2167
+ };
2168
+ const useInitStore = config => {
2169
+ const store = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => getStore(config), []);
2170
+ const persistor = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => (0,redux_persist__WEBPACK_IMPORTED_MODULE_2__.persistStore)(store), [store]);
2171
+ return {
2172
+ store,
2173
+ persistor
2174
+ };
2175
+ };
2176
+
2177
+ /***/ }),
2178
+
2179
+ /***/ "./src/utils/constants.js":
2180
+ /*!********************************!*\
2181
+ !*** ./src/utils/constants.js ***!
2182
+ \********************************/
2183
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2184
+
2185
+ __webpack_require__.r(__webpack_exports__);
2186
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2187
+ /* harmony export */ DEFAULT_ITEMS_PER_PAGE: () => (/* binding */ DEFAULT_ITEMS_PER_PAGE),
2188
+ /* harmony export */ FIRST_PAGE: () => (/* binding */ FIRST_PAGE),
2189
+ /* harmony export */ LAST_HOUR_OF_24_HOUR: () => (/* binding */ LAST_HOUR_OF_24_HOUR),
2190
+ /* harmony export */ LAST_MINUTE_OF_HOUR: () => (/* binding */ LAST_MINUTE_OF_HOUR),
2191
+ /* harmony export */ MILLISEC_TO_SEC: () => (/* binding */ MILLISEC_TO_SEC),
2192
+ /* harmony export */ ONE_DAY: () => (/* binding */ ONE_DAY),
2193
+ /* harmony export */ ONE_PAGE_NEXT: () => (/* binding */ ONE_PAGE_NEXT),
2194
+ /* harmony export */ PAGINATION_DISPLAY_COUNT: () => (/* binding */ PAGINATION_DISPLAY_COUNT)
2195
+ /* harmony export */ });
2196
+ const LAST_HOUR_OF_24_HOUR = 23;
2197
+ const LAST_MINUTE_OF_HOUR = 59;
2198
+ const ONE_PAGE_NEXT = 1;
2199
+ const MILLISEC_TO_SEC = 1000;
2200
+ const ONE_DAY = 1;
2201
+ const DEFAULT_ITEMS_PER_PAGE = 5;
2202
+ const FIRST_PAGE = 1;
2203
+ const PAGINATION_DISPLAY_COUNT = 3;
2204
+
2205
+ /***/ }),
2206
+
2207
+ /***/ "./src/utils/index.js":
2208
+ /*!****************************!*\
2209
+ !*** ./src/utils/index.js ***!
2210
+ \****************************/
2211
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2212
+
2213
+ __webpack_require__.r(__webpack_exports__);
2214
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2215
+ /* harmony export */ calculateOrderTotals: () => (/* binding */ calculateOrderTotals),
2216
+ /* harmony export */ defaultCurrentTime: () => (/* binding */ defaultCurrentTime),
2217
+ /* harmony export */ formatCurrency: () => (/* binding */ formatCurrency),
2218
+ /* harmony export */ getEpochLowerUpperInSeconds: () => (/* binding */ getEpochLowerUpperInSeconds),
2219
+ /* harmony export */ getFormattedDate: () => (/* binding */ getFormattedDate),
2220
+ /* harmony export */ getNow: () => (/* binding */ getNow),
2221
+ /* harmony export */ getOrderTickets: () => (/* binding */ getOrderTickets),
2222
+ /* harmony export */ getSummitFormattedDate: () => (/* binding */ getSummitFormattedDate),
2223
+ /* harmony export */ getSummitReassignDate: () => (/* binding */ getSummitReassignDate),
2224
+ /* harmony export */ useNow: () => (/* binding */ useNow)
2225
+ /* harmony export */ });
2226
+ /* harmony import */ var moment_timezone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment-timezone */ "moment-timezone");
2227
+ /* harmony import */ var moment_timezone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment_timezone__WEBPACK_IMPORTED_MODULE_0__);
2228
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ "react-redux");
2229
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);
2230
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ "./src/utils/constants.js");
2231
+
2232
+
2233
+
2234
+ const formatCurrency = (value, _ref) => {
2235
+ let {
2236
+ locale = "en-US",
2237
+ ...options
2238
+ } = _ref;
2239
+ const defaultOptions = {
2240
+ currency: "USD",
2241
+ minimumFractionDigits: 2,
2242
+ maximumFractionDigits: 2
2243
+ };
2244
+ const formatter = new Intl.NumberFormat(locale, {
2245
+ style: "currency",
2246
+ ...defaultOptions,
2247
+ ...options
2248
+ });
2249
+ return formatter.format(value);
2250
+ };
2251
+ const getFormattedDate = (datetime, timeZone) => {
2252
+ if (timeZone) return moment_timezone__WEBPACK_IMPORTED_MODULE_0___default().tz(datetime * _constants__WEBPACK_IMPORTED_MODULE_2__.MILLISEC_TO_SEC, timeZone).format("MMMM DD, YYYY");
2253
+ return moment_timezone__WEBPACK_IMPORTED_MODULE_0___default().unix(datetime).format("MMMM DD, YYYY");
2254
+ };
2255
+ const getSummitFormattedDate = summit => {
2256
+ if (!summit) return null;
2257
+ const startDay = moment_timezone__WEBPACK_IMPORTED_MODULE_0___default()(summit.start_date * _constants__WEBPACK_IMPORTED_MODULE_2__.MILLISEC_TO_SEC).tz(summit.time_zone_id);
2258
+ const endDay = moment_timezone__WEBPACK_IMPORTED_MODULE_0___default()(summit.end_date * _constants__WEBPACK_IMPORTED_MODULE_2__.MILLISEC_TO_SEC).tz(summit.time_zone_id);
2259
+ const days = endDay.diff(startDay, "days");
2260
+ let formatStartDate = "MMMM DD, YYYY";
2261
+ let formatEndDate = "MMMM DD, YYYY";
2262
+ if (startDay.year() === endDay.year()) formatStartDate = "MMMM DD";
2263
+ if (startDay.month() === endDay.month()) formatEndDate = "DD, YYYY";
2264
+ const startDate = startDay.format(formatStartDate);
2265
+ const endDate = endDay.format(formatEndDate);
2266
+ if (days > _constants__WEBPACK_IMPORTED_MODULE_2__.ONE_DAY) return `${startDate} - ${endDate}`;
2267
+ return startDate;
2268
+ };
2269
+ const calculateOrderTotals = _ref2 => {
2270
+ let {
2271
+ order,
2272
+ summit,
2273
+ tickets
2274
+ } = _ref2;
2275
+ if (!order || !summit || !tickets) return {};
2276
+ const {
2277
+ refunded_amount,
2278
+ discount_amount,
2279
+ taxes_amount,
2280
+ amount
2281
+ } = order;
2282
+ const {
2283
+ ticket_types
2284
+ } = summit;
2285
+ const ticketSummary = [];
2286
+ let purchaseTicketTotal = 0;
2287
+ const currencyObject = {
2288
+ currency: order.currency
2289
+ };
2290
+ Object.keys(order.tickets_excerpt_by_ticket_type).map(ticket => {
2291
+ const ticketType = ticket_types.find(tt => tt.name === ticket);
2292
+ ticketSummary.push({
2293
+ ticket_type_id: ticketType.id,
2294
+ ticket_type: ticketType,
2295
+ name: ticket,
2296
+ qty: order.tickets_excerpt_by_ticket_type[ticket]
2297
+ });
2298
+ purchaseTicketTotal += ticketType.cost * order.tickets_excerpt_by_ticket_type[ticket];
2299
+ return ticketSummary;
2300
+ });
2301
+ const purchaseTotal = formatCurrency(purchaseTicketTotal, currencyObject);
2302
+ const discountTotal = formatCurrency(discount_amount, currencyObject);
2303
+ const refundTotal = formatCurrency(refunded_amount, currencyObject);
2304
+ const taxesTotal = formatCurrency(taxes_amount, currencyObject);
2305
+ const amountTotal = Object.prototype.hasOwnProperty.call(order, "amount") ? formatCurrency(amount, currencyObject) : formatCurrency(purchaseTotal, currencyObject);
2306
+ return {
2307
+ discountTotal,
2308
+ refundTotal,
2309
+ taxesTotal,
2310
+ amountTotal,
2311
+ ticketSummary
2312
+ };
2313
+ };
2314
+ const getOrderTickets = (memberOrders, orderId) => {
2315
+ const orders = memberOrders.filter(o => o.id === orderId);
2316
+ return orders[0]?.memberTickets;
2317
+ };
2318
+ const getEpochLowerUpperInSeconds = ts => {
2319
+ const lower = ts.setHours(0, 0, 0, 0) / _constants__WEBPACK_IMPORTED_MODULE_2__.MILLISEC_TO_SEC;
2320
+ const upper = ts.setHours(_constants__WEBPACK_IMPORTED_MODULE_2__.LAST_HOUR_OF_24_HOUR, _constants__WEBPACK_IMPORTED_MODULE_2__.LAST_MINUTE_OF_HOUR, 0, 0) / _constants__WEBPACK_IMPORTED_MODULE_2__.MILLISEC_TO_SEC;
2321
+ return {
2322
+ lower,
2323
+ upper
2324
+ };
2325
+ };
2326
+ const getSummitReassignDate = summit => {
2327
+ if (!summit) return null;
2328
+ return summit.reassign_ticket_till_date && summit.reassign_ticket_till_date < summit.end_date ? summit.reassign_ticket_till_date : summit.end_date;
2329
+ };
2330
+ const defaultCurrentTime = () => Math.round(+new Date() / _constants__WEBPACK_IMPORTED_MODULE_2__.MILLISEC_TO_SEC);
2331
+ const getNow = () => (dispatch, getState) => {
2332
+ const {
2333
+ timerState
2334
+ } = getState();
2335
+ return timerState?.nowUtc == null ? defaultCurrentTime() : timerState?.nowUtc;
2336
+ };
2337
+ const useNow = () => {
2338
+ const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useDispatch)();
2339
+ return dispatch(getNow());
2340
+ };
2341
+
2342
+ /***/ }),
2343
+
2344
+ /***/ "./src/components/FilterSortSearch/styles.module.scss":
2345
+ /*!************************************************************!*\
2346
+ !*** ./src/components/FilterSortSearch/styles.module.scss ***!
2347
+ \************************************************************/
2348
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2349
+
2350
+ __webpack_require__.r(__webpack_exports__);
2351
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2352
+ /* harmony export */ "MuiOutlinedInput-notchedOutline": () => (/* binding */ _1),
2353
+ /* harmony export */ "MuiPickersCalendarHeader-labelContainer": () => (/* binding */ _2),
2354
+ /* harmony export */ calendarDisplay: () => (/* binding */ _3),
2355
+ /* harmony export */ container: () => (/* binding */ _4),
2356
+ /* harmony export */ datePickerContainer: () => (/* binding */ _5),
2357
+ /* harmony export */ datepickerClose: () => (/* binding */ _6),
2358
+ /* harmony export */ filterContainer: () => (/* binding */ _7),
2359
+ /* harmony export */ filterDateLabel: () => (/* binding */ _8),
2360
+ /* harmony export */ filterIcon: () => (/* binding */ _9),
2361
+ /* harmony export */ filterLabel: () => (/* binding */ _a),
2362
+ /* harmony export */ filterListContainer: () => (/* binding */ _b),
2363
+ /* harmony export */ filterNumActive: () => (/* binding */ _c),
2364
+ /* harmony export */ filterSortContainer: () => (/* binding */ _d),
2365
+ /* harmony export */ label: () => (/* binding */ _e),
2366
+ /* harmony export */ showDatePicker: () => (/* binding */ _f),
2367
+ /* harmony export */ sortContainer: () => (/* binding */ _10),
2368
+ /* harmony export */ sortIcon: () => (/* binding */ _11),
2369
+ /* harmony export */ sortLabel: () => (/* binding */ _12),
2370
+ /* harmony export */ sortListContainer: () => (/* binding */ _13)
2371
+ /* harmony export */ });
2372
+ // extracted by mini-css-extract-plugin
2373
+ var _1 = "MuiOutlinedInput-notchedOutline___RoimR";
2374
+ var _2 = "MuiPickersCalendarHeader-labelContainer___ooI0V";
2375
+ var _3 = "calendarDisplay___im_jh";
2376
+ var _4 = "container___N3Y4X";
2377
+ var _5 = "datePickerContainer___JW2lO";
2378
+ var _6 = "datepickerClose___V9gHC";
2379
+ var _7 = "filterContainer___rGpYV";
2380
+ var _8 = "filterDateLabel___ifD4p";
2381
+ var _9 = "filterIcon___l21KI";
2382
+ var _a = "filterLabel____P0wn";
2383
+ var _b = "filterListContainer___VmdGq";
2384
+ var _c = "filterNumActive___VuHCJ";
2385
+ var _d = "filterSortContainer___arBvQ";
2386
+ var _e = "label___yNFyj";
2387
+ var _f = "showDatePicker___UpQbp";
2388
+ var _10 = "sortContainer___lRsjU";
2389
+ var _11 = "sortIcon___fVV5K";
2390
+ var _12 = "sortLabel___UqLTC";
2391
+ var _13 = "sortListContainer___cmnBD";
2392
+
2393
+
2394
+
2395
+ /***/ }),
2396
+
2397
+ /***/ "./src/components/OrderSummary/styles.module.scss":
2398
+ /*!********************************************************!*\
2399
+ !*** ./src/components/OrderSummary/styles.module.scss ***!
2400
+ \********************************************************/
2401
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2402
+
2403
+ __webpack_require__.r(__webpack_exports__);
2404
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2405
+ /* harmony export */ orderDetailsMmount: () => (/* binding */ _1),
2406
+ /* harmony export */ orderDetailsTickets: () => (/* binding */ _2),
2407
+ /* harmony export */ orderOrderNumber: () => (/* binding */ _3),
2408
+ /* harmony export */ orderSummaryButton: () => (/* binding */ _4),
2409
+ /* harmony export */ orderSummaryPurchasedInfo: () => (/* binding */ _5),
2410
+ /* harmony export */ orderSummaryPurchasedNumber: () => (/* binding */ _6),
2411
+ /* harmony export */ orderSummaryTable: () => (/* binding */ _7),
2412
+ /* harmony export */ orderSummaryWrapper: () => (/* binding */ _8)
2413
+ /* harmony export */ });
2414
+ // extracted by mini-css-extract-plugin
2415
+ var _1 = "orderDetailsMmount___r3kRA";
2416
+ var _2 = "orderDetailsTickets___m4IjK";
2417
+ var _3 = "orderOrderNumber___RqCbC";
2418
+ var _4 = "orderSummaryButton___uxjht";
2419
+ var _5 = "orderSummaryPurchasedInfo____RBXE";
2420
+ var _6 = "orderSummaryPurchasedNumber___pqy_I";
2421
+ var _7 = "orderSummaryTable___YDnxV";
2422
+ var _8 = "orderSummaryWrapper___RwIER";
2423
+
2424
+
2425
+
2426
+ /***/ }),
2427
+
2428
+ /***/ "./src/components/OrdersList/styles.module.scss":
2429
+ /*!******************************************************!*\
2430
+ !*** ./src/components/OrdersList/styles.module.scss ***!
2431
+ \******************************************************/
2432
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2433
+
2434
+ __webpack_require__.r(__webpack_exports__);
2435
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2436
+ /* harmony export */ assignTicketButton: () => (/* binding */ _1),
2437
+ /* harmony export */ blackButton: () => (/* binding */ _2),
2438
+ /* harmony export */ copyIcon: () => (/* binding */ _3),
2439
+ /* harmony export */ detailsRequiredLabel: () => (/* binding */ _4),
2440
+ /* harmony export */ display_none: () => (/* binding */ _5),
2441
+ /* harmony export */ label: () => (/* binding */ _6),
2442
+ /* harmony export */ orderTicketContainer: () => (/* binding */ _7),
2443
+ /* harmony export */ orderTicketInfo: () => (/* binding */ _8),
2444
+ /* harmony export */ orderTicketInfoContainer: () => (/* binding */ _9),
2445
+ /* harmony export */ orderTicketNoContainer: () => (/* binding */ _a),
2446
+ /* harmony export */ orderTicketNumberTruncated: () => (/* binding */ _b),
2447
+ /* harmony export */ orderWrapper: () => (/* binding */ _c),
2448
+ /* harmony export */ reassignButton: () => (/* binding */ _d),
2449
+ /* harmony export */ tabButtons: () => (/* binding */ _e),
2450
+ /* harmony export */ ticketActionButtons: () => (/* binding */ _f),
2451
+ /* harmony export */ ticketListContainer: () => (/* binding */ _10),
2452
+ /* harmony export */ ticketNo: () => (/* binding */ _11),
2453
+ /* harmony export */ ticketOwnerEmail: () => (/* binding */ _12),
2454
+ /* harmony export */ ticketTicketType: () => (/* binding */ _13),
2455
+ /* harmony export */ viewFinishTicketButton: () => (/* binding */ _14),
2456
+ /* harmony export */ viewMoreButton: () => (/* binding */ _15)
2457
+ /* harmony export */ });
2458
+ // extracted by mini-css-extract-plugin
2459
+ var _1 = "assignTicketButton___zzLsc";
2460
+ var _2 = "blackButton___l9hj9";
2461
+ var _3 = "copyIcon___NkHGO";
2462
+ var _4 = "detailsRequiredLabel___Y2kor";
2463
+ var _5 = "display_none___CqpL3";
2464
+ var _6 = "label___zXDWz";
2465
+ var _7 = "orderTicketContainer___ZJLzk";
2466
+ var _8 = "orderTicketInfo___gemqB";
2467
+ var _9 = "orderTicketInfoContainer____p66V";
2468
+ var _a = "orderTicketNoContainer___vqohN";
2469
+ var _b = "orderTicketNumberTruncated___HXmdw";
2470
+ var _c = "orderWrapper___yDBAo";
2471
+ var _d = "reassignButton___RojM5";
2472
+ var _e = "tabButtons___xTyJA";
2473
+ var _f = "ticketActionButtons___rpSMQ";
2474
+ var _10 = "ticketListContainer___cfmrr";
2475
+ var _11 = "ticketNo___a2iM9";
2476
+ var _12 = "ticketOwnerEmail___Zt4OE";
2477
+ var _13 = "ticketTicketType___Zq_f0";
2478
+ var _14 = "viewFinishTicketButton___HF6Im";
2479
+ var _15 = "viewMoreButton___K_1zT";
2480
+
2481
+
2482
+
2483
+ /***/ }),
2484
+
2485
+ /***/ "./src/components/TicketStatus/styles.module.scss":
2486
+ /*!********************************************************!*\
2487
+ !*** ./src/components/TicketStatus/styles.module.scss ***!
2488
+ \********************************************************/
2489
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2490
+
2491
+ __webpack_require__.r(__webpack_exports__);
2492
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2493
+ /* harmony export */ buttonCancelled: () => (/* binding */ _1),
2494
+ /* harmony export */ buttonComplete: () => (/* binding */ _2),
2495
+ /* harmony export */ buttonIncomplete: () => (/* binding */ _3),
2496
+ /* harmony export */ buttonPill: () => (/* binding */ _4),
2497
+ /* harmony export */ buttonRefundRequested: () => (/* binding */ _5),
2498
+ /* harmony export */ buttonUnassigned: () => (/* binding */ _6),
2499
+ /* harmony export */ ticketStatusContainer: () => (/* binding */ _7)
2500
+ /* harmony export */ });
2501
+ // extracted by mini-css-extract-plugin
2502
+ var _1 = "buttonCancelled___ErlDZ";
2503
+ var _2 = "buttonComplete___llWkZ";
2504
+ var _3 = "buttonIncomplete___TolHg";
2505
+ var _4 = "buttonPill___zq2tc";
2506
+ var _5 = "buttonRefundRequested___pWt30";
2507
+ var _6 = "buttonUnassigned___YDd8X";
2508
+ var _7 = "ticketStatusContainer___qj6fb";
2509
+
2510
+
2511
+
2512
+ /***/ }),
2513
+
2514
+ /***/ "./src/components/styles.module.scss":
2515
+ /*!*******************************************!*\
2516
+ !*** ./src/components/styles.module.scss ***!
2517
+ \*******************************************/
2518
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2519
+
2520
+ __webpack_require__.r(__webpack_exports__);
2521
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2522
+ /* harmony export */ noOrdersFound: () => (/* binding */ _1),
2523
+ /* harmony export */ summitTitleDate: () => (/* binding */ _2),
2524
+ /* harmony export */ widgetHeader: () => (/* binding */ _3)
2525
+ /* harmony export */ });
2526
+ // extracted by mini-css-extract-plugin
2527
+ var _1 = "noOrdersFound___Aog2p";
2528
+ var _2 = "summitTitleDate___Z19Pm";
2529
+ var _3 = "widgetHeader___yY5ge";
2530
+
2531
+
2532
+
2533
+ /***/ }),
2534
+
2535
+ /***/ "@mui/icons-material/Close":
2536
+ /*!********************************************!*\
2537
+ !*** external "@mui/icons-material/Close" ***!
2538
+ \********************************************/
2539
+ /***/ ((module) => {
2540
+
2541
+ module.exports = require("@mui/icons-material/Close");
2542
+
2543
+ /***/ }),
2544
+
2545
+ /***/ "@mui/icons-material/ContentCopy":
2546
+ /*!**************************************************!*\
2547
+ !*** external "@mui/icons-material/ContentCopy" ***!
2548
+ \**************************************************/
2549
+ /***/ ((module) => {
2550
+
2551
+ module.exports = require("@mui/icons-material/ContentCopy");
2552
+
2553
+ /***/ }),
2554
+
2555
+ /***/ "@mui/icons-material/Error":
2556
+ /*!********************************************!*\
2557
+ !*** external "@mui/icons-material/Error" ***!
2558
+ \********************************************/
2559
+ /***/ ((module) => {
2560
+
2561
+ module.exports = require("@mui/icons-material/Error");
2562
+
2563
+ /***/ }),
2564
+
2565
+ /***/ "@mui/icons-material/FilterList":
2566
+ /*!*************************************************!*\
2567
+ !*** external "@mui/icons-material/FilterList" ***!
2568
+ \*************************************************/
2569
+ /***/ ((module) => {
2570
+
2571
+ module.exports = require("@mui/icons-material/FilterList");
2572
+
2573
+ /***/ }),
2574
+
2575
+ /***/ "@mui/icons-material/ImportExport":
2576
+ /*!***************************************************!*\
2577
+ !*** external "@mui/icons-material/ImportExport" ***!
2578
+ \***************************************************/
2579
+ /***/ ((module) => {
2580
+
2581
+ module.exports = require("@mui/icons-material/ImportExport");
2582
+
2583
+ /***/ }),
2584
+
2585
+ /***/ "@mui/icons-material/Search":
2586
+ /*!*********************************************!*\
2587
+ !*** external "@mui/icons-material/Search" ***!
2588
+ \*********************************************/
2589
+ /***/ ((module) => {
2590
+
2591
+ module.exports = require("@mui/icons-material/Search");
2592
+
2593
+ /***/ }),
2594
+
2595
+ /***/ "@mui/material":
2596
+ /*!********************************!*\
2597
+ !*** external "@mui/material" ***!
2598
+ \********************************/
2599
+ /***/ ((module) => {
2600
+
2601
+ module.exports = require("@mui/material");
2602
+
2603
+ /***/ }),
2604
+
2605
+ /***/ "@mui/material/Divider":
2606
+ /*!****************************************!*\
2607
+ !*** external "@mui/material/Divider" ***!
2608
+ \****************************************/
2609
+ /***/ ((module) => {
2610
+
2611
+ module.exports = require("@mui/material/Divider");
2612
+
2613
+ /***/ }),
2614
+
2615
+ /***/ "@mui/material/InputBase":
2616
+ /*!******************************************!*\
2617
+ !*** external "@mui/material/InputBase" ***!
2618
+ \******************************************/
2619
+ /***/ ((module) => {
2620
+
2621
+ module.exports = require("@mui/material/InputBase");
2622
+
2623
+ /***/ }),
2624
+
2625
+ /***/ "@mui/material/Stack":
2626
+ /*!**************************************!*\
2627
+ !*** external "@mui/material/Stack" ***!
2628
+ \**************************************/
2629
+ /***/ ((module) => {
2630
+
2631
+ module.exports = require("@mui/material/Stack");
2632
+
2633
+ /***/ }),
2634
+
2635
+ /***/ "@mui/material/Tab":
2636
+ /*!************************************!*\
2637
+ !*** external "@mui/material/Tab" ***!
2638
+ \************************************/
2639
+ /***/ ((module) => {
2640
+
2641
+ module.exports = require("@mui/material/Tab");
2642
+
2643
+ /***/ }),
2644
+
2645
+ /***/ "@mui/material/Tabs":
2646
+ /*!*************************************!*\
2647
+ !*** external "@mui/material/Tabs" ***!
2648
+ \*************************************/
2649
+ /***/ ((module) => {
2650
+
2651
+ module.exports = require("@mui/material/Tabs");
2652
+
2653
+ /***/ }),
2654
+
2655
+ /***/ "@mui/material/styles":
2656
+ /*!***************************************!*\
2657
+ !*** external "@mui/material/styles" ***!
2658
+ \***************************************/
2659
+ /***/ ((module) => {
2660
+
2661
+ module.exports = require("@mui/material/styles");
2662
+
2663
+ /***/ }),
2664
+
2665
+ /***/ "@mui/material/useMediaQuery":
2666
+ /*!**********************************************!*\
2667
+ !*** external "@mui/material/useMediaQuery" ***!
2668
+ \**********************************************/
2669
+ /***/ ((module) => {
2670
+
2671
+ module.exports = require("@mui/material/useMediaQuery");
2672
+
2673
+ /***/ }),
2674
+
2675
+ /***/ "@mui/x-date-pickers/AdapterDayjs":
2676
+ /*!***************************************************!*\
2677
+ !*** external "@mui/x-date-pickers/AdapterDayjs" ***!
2678
+ \***************************************************/
2679
+ /***/ ((module) => {
2680
+
2681
+ module.exports = require("@mui/x-date-pickers/AdapterDayjs");
2682
+
2683
+ /***/ }),
2684
+
2685
+ /***/ "@mui/x-date-pickers/DatePicker":
2686
+ /*!*************************************************!*\
2687
+ !*** external "@mui/x-date-pickers/DatePicker" ***!
2688
+ \*************************************************/
2689
+ /***/ ((module) => {
2690
+
2691
+ module.exports = require("@mui/x-date-pickers/DatePicker");
2692
+
2693
+ /***/ }),
2694
+
2695
+ /***/ "@mui/x-date-pickers/LocalizationProvider":
2696
+ /*!***********************************************************!*\
2697
+ !*** external "@mui/x-date-pickers/LocalizationProvider" ***!
2698
+ \***********************************************************/
2699
+ /***/ ((module) => {
2700
+
2701
+ module.exports = require("@mui/x-date-pickers/LocalizationProvider");
2702
+
2703
+ /***/ }),
2704
+
2705
+ /***/ "@reduxjs/toolkit":
2706
+ /*!***********************************!*\
2707
+ !*** external "@reduxjs/toolkit" ***!
2708
+ \***********************************/
2709
+ /***/ ((module) => {
2710
+
2711
+ module.exports = require("@reduxjs/toolkit");
2712
+
2713
+ /***/ }),
2714
+
2715
+ /***/ "dayjs":
2716
+ /*!************************!*\
2717
+ !*** external "dayjs" ***!
2718
+ \************************/
2719
+ /***/ ((module) => {
2720
+
2721
+ module.exports = require("dayjs");
2722
+
2723
+ /***/ }),
2724
+
2725
+ /***/ "moment-timezone":
2726
+ /*!**********************************!*\
2727
+ !*** external "moment-timezone" ***!
2728
+ \**********************************/
2729
+ /***/ ((module) => {
2730
+
2731
+ module.exports = require("moment-timezone");
2732
+
2733
+ /***/ }),
2734
+
2735
+ /***/ "openstack-uicore-foundation/lib/security/actions":
2736
+ /*!*******************************************************************!*\
2737
+ !*** external "openstack-uicore-foundation/lib/security/actions" ***!
2738
+ \*******************************************************************/
2739
+ /***/ ((module) => {
2740
+
2741
+ module.exports = require("openstack-uicore-foundation/lib/security/actions");
2742
+
2743
+ /***/ }),
2744
+
2745
+ /***/ "openstack-uicore-foundation/lib/security/methods":
2746
+ /*!*******************************************************************!*\
2747
+ !*** external "openstack-uicore-foundation/lib/security/methods" ***!
2748
+ \*******************************************************************/
2749
+ /***/ ((module) => {
2750
+
2751
+ module.exports = require("openstack-uicore-foundation/lib/security/methods");
2752
+
2753
+ /***/ }),
2754
+
2755
+ /***/ "openstack-uicore-foundation/lib/utils/actions":
2756
+ /*!****************************************************************!*\
2757
+ !*** external "openstack-uicore-foundation/lib/utils/actions" ***!
2758
+ \****************************************************************/
2759
+ /***/ ((module) => {
2760
+
2761
+ module.exports = require("openstack-uicore-foundation/lib/utils/actions");
2762
+
2763
+ /***/ }),
2764
+
2765
+ /***/ "prop-types":
2766
+ /*!*****************************!*\
2767
+ !*** external "prop-types" ***!
2768
+ \*****************************/
2769
+ /***/ ((module) => {
2770
+
2771
+ module.exports = require("prop-types");
2772
+
2773
+ /***/ }),
2774
+
2775
+ /***/ "react":
2776
+ /*!************************!*\
2777
+ !*** external "react" ***!
2778
+ \************************/
2779
+ /***/ ((module) => {
2780
+
2781
+ module.exports = require("react");
2782
+
2783
+ /***/ }),
2784
+
2785
+ /***/ "react-i18next":
2786
+ /*!********************************!*\
2787
+ !*** external "react-i18next" ***!
2788
+ \********************************/
2789
+ /***/ ((module) => {
2790
+
2791
+ module.exports = require("react-i18next");
2792
+
2793
+ /***/ }),
2794
+
2795
+ /***/ "react-infinite-scroll-component":
2796
+ /*!**************************************************!*\
2797
+ !*** external "react-infinite-scroll-component" ***!
2798
+ \**************************************************/
2799
+ /***/ ((module) => {
2800
+
2801
+ module.exports = require("react-infinite-scroll-component");
2802
+
2803
+ /***/ }),
2804
+
2805
+ /***/ "react-redux":
2806
+ /*!******************************!*\
2807
+ !*** external "react-redux" ***!
2808
+ \******************************/
2809
+ /***/ ((module) => {
2810
+
2811
+ module.exports = require("react-redux");
2812
+
2813
+ /***/ }),
2814
+
2815
+ /***/ "react/jsx-runtime":
2816
+ /*!************************************!*\
2817
+ !*** external "react/jsx-runtime" ***!
2818
+ \************************************/
2819
+ /***/ ((module) => {
2820
+
2821
+ module.exports = require("react/jsx-runtime");
2822
+
2823
+ /***/ }),
2824
+
2825
+ /***/ "redux":
2826
+ /*!************************!*\
2827
+ !*** external "redux" ***!
2828
+ \************************/
2829
+ /***/ ((module) => {
2830
+
2831
+ module.exports = require("redux");
2832
+
2833
+ /***/ }),
2834
+
2835
+ /***/ "redux-persist":
2836
+ /*!********************************!*\
2837
+ !*** external "redux-persist" ***!
2838
+ \********************************/
2839
+ /***/ ((module) => {
2840
+
2841
+ module.exports = require("redux-persist");
2842
+
2843
+ /***/ }),
2844
+
2845
+ /***/ "redux-persist/integration/react":
2846
+ /*!**************************************************!*\
2847
+ !*** external "redux-persist/integration/react" ***!
2848
+ \**************************************************/
2849
+ /***/ ((module) => {
2850
+
2851
+ module.exports = require("redux-persist/integration/react");
2852
+
2853
+ /***/ }),
2854
+
2855
+ /***/ "redux-persist/lib/storage":
2856
+ /*!********************************************!*\
2857
+ !*** external "redux-persist/lib/storage" ***!
2858
+ \********************************************/
2859
+ /***/ ((module) => {
2860
+
2861
+ module.exports = require("redux-persist/lib/storage");
2862
+
2863
+ /***/ })
2864
+
2865
+ /******/ });
2866
+ /************************************************************************/
2867
+ /******/ // The module cache
2868
+ /******/ var __webpack_module_cache__ = {};
2869
+ /******/
2870
+ /******/ // The require function
2871
+ /******/ function __webpack_require__(moduleId) {
2872
+ /******/ // Check if module is in cache
2873
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
2874
+ /******/ if (cachedModule !== undefined) {
2875
+ /******/ return cachedModule.exports;
2876
+ /******/ }
2877
+ /******/ // Create a new module (and put it into the cache)
2878
+ /******/ var module = __webpack_module_cache__[moduleId] = {
2879
+ /******/ // no module.id needed
2880
+ /******/ // no module.loaded needed
2881
+ /******/ exports: {}
2882
+ /******/ };
2883
+ /******/
2884
+ /******/ // Execute the module function
2885
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
2886
+ /******/
2887
+ /******/ // Return the exports of the module
2888
+ /******/ return module.exports;
2889
+ /******/ }
2890
+ /******/
2891
+ /************************************************************************/
2892
+ /******/ /* webpack/runtime/compat get default export */
2893
+ /******/ (() => {
2894
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
2895
+ /******/ __webpack_require__.n = (module) => {
2896
+ /******/ var getter = module && module.__esModule ?
2897
+ /******/ () => (module['default']) :
2898
+ /******/ () => (module);
2899
+ /******/ __webpack_require__.d(getter, { a: getter });
2900
+ /******/ return getter;
2901
+ /******/ };
2902
+ /******/ })();
2903
+ /******/
2904
+ /******/ /* webpack/runtime/define property getters */
2905
+ /******/ (() => {
2906
+ /******/ // define getter functions for harmony exports
2907
+ /******/ __webpack_require__.d = (exports, definition) => {
2908
+ /******/ for(var key in definition) {
2909
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
2910
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
2911
+ /******/ }
2912
+ /******/ }
2913
+ /******/ };
2914
+ /******/ })();
2915
+ /******/
2916
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
2917
+ /******/ (() => {
2918
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
2919
+ /******/ })();
2920
+ /******/
2921
+ /******/ /* webpack/runtime/make namespace object */
2922
+ /******/ (() => {
2923
+ /******/ // define __esModule on exports
2924
+ /******/ __webpack_require__.r = (exports) => {
2925
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
2926
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2927
+ /******/ }
2928
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
2929
+ /******/ };
2930
+ /******/ })();
2931
+ /******/
2932
+ /************************************************************************/
2933
+ var __webpack_exports__ = {};
2934
+ /*!*****************************************!*\
2935
+ !*** ./src/my-orders-tickets-widget.js ***!
2936
+ \*****************************************/
2937
+ __webpack_require__.r(__webpack_exports__);
2938
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2939
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2940
+ /* harmony export */ });
2941
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
2942
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
2943
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
2944
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
2945
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-redux */ "react-redux");
2946
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_2__);
2947
+ /* harmony import */ var redux_persist_integration_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! redux-persist/integration/react */ "redux-persist/integration/react");
2948
+ /* harmony import */ var redux_persist_integration_react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(redux_persist_integration_react__WEBPACK_IMPORTED_MODULE_3__);
2949
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-i18next */ "react-i18next");
2950
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_4__);
2951
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ "@mui/material");
2952
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_5__);
2953
+ /* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./store */ "./src/store.js");
2954
+ /* harmony import */ var _components_MyOrdersTickets__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/MyOrdersTickets */ "./src/components/MyOrdersTickets.js");
2955
+ /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./actions */ "./src/actions.js");
2956
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
2957
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__);
2958
+ /**
2959
+ * Copyright 2024 OpenStack Foundation
2960
+ * Licensed under the Apache License, Version 2.0 (the "License");
2961
+ * you may not use this file except in compliance with the License.
2962
+ * You may obtain a copy of the License at
2963
+ * http://www.apache.org/licenses/LICENSE-2.0
2964
+ * Unless required by applicable law or agreed to in writing, software
2965
+ * distributed under the License is distributed on an "AS IS" BASIS,
2966
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2967
+ * See the License for the specific language governing permissions and
2968
+ * limitations under the License.
2969
+ * */
2970
+
2971
+
2972
+
2973
+
2974
+
2975
+
2976
+
2977
+
2978
+
2979
+
2980
+ function MyOrdersMyTicketsWidget(props) {
2981
+ const {
2982
+ loginUrl,
2983
+ supportEmail,
2984
+ summit,
2985
+ apiBaseUrl,
2986
+ user,
2987
+ clientId
2988
+ } = props;
2989
+ const {
2990
+ t
2991
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_4__.useTranslation)();
2992
+ const {
2993
+ store,
2994
+ persistor
2995
+ } = (0,_store__WEBPACK_IMPORTED_MODULE_6__.useInitStore)({
2996
+ loginUrl,
2997
+ supportEmail,
2998
+ summit,
2999
+ user,
3000
+ apiBaseUrl,
3001
+ clientId
3002
+ });
3003
+ const handleBeforeLift = () => {
3004
+ const params = new URLSearchParams(window.location.search);
3005
+ const flush = params.has("flushState");
3006
+ if (flush) store.dispatch({
3007
+ type: _actions__WEBPACK_IMPORTED_MODULE_8__.RESET_STATE,
3008
+ payload: null
3009
+ });
3010
+ };
3011
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
3012
+ store.dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_8__.setSummit)(summit));
3013
+ }, [summit]);
3014
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
3015
+ store.dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_8__.setUser)(user));
3016
+ }, [user]);
3017
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(react_redux__WEBPACK_IMPORTED_MODULE_2__.Provider, {
3018
+ store: store,
3019
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(redux_persist_integration_react__WEBPACK_IMPORTED_MODULE_3__.PersistGate, {
3020
+ onBeforeLift: handleBeforeLift,
3021
+ loading: null,
3022
+ persistor: persistor,
3023
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Box, {
3024
+ sx: {
3025
+ padding: {
3026
+ xs: 2,
3027
+ md: 0,
3028
+ lg: 0
3029
+ }
3030
+ },
3031
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("h3", {
3032
+ children: t("orders.title")
3033
+ })
3034
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_MyOrdersTickets__WEBPACK_IMPORTED_MODULE_7__["default"], {
3035
+ loginUrl: loginUrl,
3036
+ supportEmail: supportEmail,
3037
+ summit: summit,
3038
+ apiBaseUrl: apiBaseUrl
3039
+ })]
3040
+ })
3041
+ });
3042
+ }
3043
+ MyOrdersMyTicketsWidget.propTypes = {
3044
+ loginUrl: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
3045
+ supportEmail: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
3046
+ summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
3047
+ apiBaseUrl: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
3048
+ user: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object)
3049
+ };
3050
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MyOrdersMyTicketsWidget);
3051
+ /******/ return __webpack_exports__;
3052
+ /******/ })()
3053
+ ;
3054
+ });
3055
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUMsZUFDTlIsc0RBQUEsQ0FBQzJILG1FQUFlO1FBQ2R5TSxRQUFRLEVBQUVBLFFBQVM7UUFDbkJ1RSxZQUFZLEVBQUVBLFlBQWE7UUFDM0IxYyxNQUFNLEVBQUVBLE1BQU87UUFDZkYsVUFBVSxFQUFFQTtNQUFXLENBQ3hCLENBQUM7SUFBQSxDQUNTO0VBQUMsQ0FDTixDQUFDO0FBRWY7QUFFQTJjLHVCQUF1QixDQUFDMVcsU0FBUyxHQUFHO0VBQ2xDb1MsUUFBUSxFQUFFL1UsMERBQWdCO0VBQzFCc1osWUFBWSxFQUFFdFosMERBQWdCO0VBQzlCcEQsTUFBTSxFQUFFb0QsMERBQWdCO0VBQ3hCdEQsVUFBVSxFQUFFc0QsMERBQWdCO0VBQzVCL0IsSUFBSSxFQUFFK0IsMERBQWdCdUw7QUFDeEIsQ0FBQztBQUVELGlFQUFlOE4sdUJBQXVCLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9hY3Rpb25zLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvRGF0ZXBpY2tlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL1NlYXJjaC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL1NvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L09yZGVyU3VtbWFyeVRhYmxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9SZWZ1bmRFbWFpbFN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0SXRlbS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlck51bWJlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyc0xpc3REZXNrdG9wTW9iaWxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3Qvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkveC1kYXRlLXBpY2tlcnMvQWRhcHRlckRheWpzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJkYXlqc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm1vbWVudC10aW1lem9uZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInByb3AtdHlwZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC9qc3gtcnVudGltZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsICgpID0+IHtcbnJldHVybiAiLCJpbXBvcnQgeyBnZXRBY2Nlc3NUb2tlbiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCB7XG4gIGF1dGhFcnJvckhhbmRsZXIsXG4gIGdldFJlcXVlc3QsXG4gIGRlbGV0ZVJlcXVlc3QsXG4gIGNyZWF0ZUFjdGlvbixcbiAgc3RvcExvYWRpbmcsXG4gIHN0YXJ0TG9hZGluZyxcbiAgcHV0UmVxdWVzdFxufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBGSVJTVF9QQUdFLFxuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBPTkVfUEFHRV9ORVhUXG59IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgUkVTRVRfU1RBVEUgPSBcIlJFU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfRklMVEVSID0gXCJSRVNFVF9GSUxURVJcIjtcblxuLy8gT1JERVJTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9VU0VSX09SREVSUyA9IFwiR0VUX09SREVSU1wiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9PUkRFUiA9IFwiUkVGVU5EX09SREVSXCI7XG5leHBvcnQgY29uc3QgU0VUX0FDVElWRV9PUkRFUl9JRCA9IFwiU0VUX0FDVElWRV9PUkRFUl9JRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9VU0VSX09SREVSUyA9IFwiRklMVEVSX1VTRVJfT1JERVJTXCI7XG5cbi8vIFRJQ0tFVFMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFMgPSBcIkdFVF9USUNLRVRTXCI7XG5leHBvcnQgY29uc3QgQVNTSUdOX1RJQ0tFVCA9IFwiQVNTSUdOX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFTU9WRV9USUNLRVRfQVRURU5ERUUgPSBcIlJFTU9WRV9USUNLRVRfQVRURU5ERUVcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfVElDS0VUID0gXCJSRUZVTkRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRU5EX05PVElGSUNBVElPTiA9IFwiUkVTRU5EX05PVElGSUNBVElPTlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyA9IFwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiLFxuICBleHRyYVF1ZXN0aW9uczogXCJleHRyYV9xdWVzdGlvbnNcIlxufTtcblxuLy8gVVNFUiBDT05UU1xuZXhwb3J0IGNvbnN0IFNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9JRFBfUFJPRklMRSA9IFwiVVBEQVRFX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU0VUX1VTRVIgPSBcIlNFVF9VU0VSXCI7XG5cbi8vIFNVTU1JVCBDT05TVFNcbmV4cG9ydCBjb25zdCBTRVRfU1VNTUlUID0gXCJTRVRfU1VNTUlUXCI7XG5leHBvcnQgY29uc3QgR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TID0gXCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyA9IFwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1NcIjtcbmV4cG9ydCBjb25zdCBDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIkNMRUFSX01BUktFVElOR19TRVRUSU5HU1wiO1xuXG5leHBvcnQgY29uc3QgcmVzZXRTdGF0ZSA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfU1RBVEUpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRGaWx0ZXIgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0ZJTFRFUikoe30pKTtcbn07XG5cbi8vIEZJTFRFUiAvIFNPUlQgQ09OU1RBTlRTXG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9EQVRFID0gXCJGSUxURVJfVkFSX0RBVEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09SREVSX05VTUJFUiA9IFwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcIjtcblxuLy8gRklMVEVSL1NPUlQgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlck9iaikgPT4ge1xuICBjb25zdCBmaWx0ZXIgPSBbXTtcbiAgaWYgKGZpbHRlck9iai50eXBlID09PSBGSUxURVJfVkFSX0RBVEUpIHtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJPYmoubmFtZX1bXSR7ZmlsdGVyT2JqLmxvd2VyfSYmJHtmaWx0ZXJPYmoudXBwZXJ9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai50eXBlID09PSBGSUxURVJfVkFSX09SREVSX05VTUJFUikge1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck9iai5uYW1lfT1AJHtmaWx0ZXJPYmoudmFsdWV9YCk7XG4gIH1cbiAgcmV0dXJuIGZpbHRlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTb3J0RGlyZWN0aW9uID0gKGRpcmVjdGlvbikgPT5cbiAgZGlyZWN0aW9uID09PSBcImFzY1wiID8gXCIrXCIgOiBcIi1cIjtcblxuLy8gT1JERVJTIEFDVElPTlNcbmV4cG9ydCBjb25zdCBnZXRVc2VyT3JkZXJzID1cbiAgKHtcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIgPSB7fSxcbiAgICBzb3J0ID0ge30sXG4gICAgbmV4dCA9IGZhbHNlXG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiXSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlOiBuZXh0ID8gcGFnZSArIE9ORV9QQUdFX05FWFQgOiBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlcik7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVVNFUl9PUkRFUlMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9tZWAsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNldEFjdGl2ZU9yZGVySWQgPSAob3JkZXJJZCkgPT4gYXN5bmMgKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FDVElWRV9PUkRFUl9JRCkob3JkZXJJZCkpO1xuXG4vLyBVU0VSIEFDVElPTlNcbmV4cG9ydCBjb25zdCBzZXRVc2VyID0gKHVzZXIpID0+IChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9VU0VSKSh1c2VyKSk7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVQcm9maWxlID1cbiAgKHByb2ZpbGUpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgeyBpZHBCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuKCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gbnVsbDtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUpKCkpO1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9JRFBfUFJPRklMRSksXG4gICAgICAvLyBUT0RPOiBuZWVkIElEUF9CQVNFX1VSTFxuICAgICAgYCR7aWRwQmFzZVVybH0vYXBpL3YxL3VzZXJzL21lYCxcbiAgICAgIHByb2ZpbGUsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHBheWxvYWQpXG4gICAgICAuY2F0Y2goKCkgPT4gZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNUT1BfTE9BRElOR19JRFBfUFJPRklMRSkoKSkpO1xuICB9O1xuXG4vLyBUSUNLRVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlclRpY2tldHMgPVxuICAoeyBwYWdlID0gRklSU1RfUEFHRSwgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB1c2VyU3RhdGU6IHsgdXNlclByb2ZpbGUgfSxcbiAgICAgIHN1bW1pdFxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGlmICghc3VtbWl0KSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuKCk7XG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgaWYgKCF1c2VyUHJvZmlsZS5pZCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBmaWx0ZXI6IFwic3RhdHVzPT1QYWlkXCIsXG4gICAgICBleHBhbmQ6IFwib3JkZXIsIG93bmVyLCB0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3JkZXIuaWQsb3JkZXIub3duZXJfZmlyc3RfbmFtZSxvcmRlci5vd25lcl9sYXN0X25hbWUsb3JkZXIub3duZXJfZW1haWwsb3duZXIuZmlyc3RfbmFtZSxvd25lci5sYXN0X25hbWUsb3duZXIuc3RhdHVzXCIsXG4gICAgICByZWxhdGlvbnM6IFwibm9uZVwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9hbGwvdGlja2V0cy9tZWAsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRzQnlPcmRlciA9XG4gICh7IG9yZGVySWQsIHBhZ2UgPSBGSVJTVF9QQUdFLCBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuKCk7XG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlXCIsXG4gICAgICBvcmRlcjogXCIraWRcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzYCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlc2VuZE5vdGlmaWNhdGlvbiA9XG4gICh0aWNrZXQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuKCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IHsgbWVzc2FnZSB9ID0gdGlja2V0O1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VORF9OT1RJRklDQVRJT04pLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L2F0dGVuZGVlL3JlaW52aXRlYCxcbiAgICAgIHsgbWVzc2FnZSB9LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kVGlja2V0ID1cbiAgKHsgdGlja2V0IH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlbigpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIG51bGw7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCB7XG4gICAgICBvcmRlclN0YXRlOiB7IGN1cnJlbnRfcGFnZTogb3JkZXJQYWdlIH0sXG4gICAgICB0aWNrZXRTdGF0ZTogeyBjdXJyZW50X3BhZ2U6IHRpY2tldFBhZ2UgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlbGV0ZVJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFRlVORF9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3JlZnVuZGAsXG4gICAgICB7fSxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcblxuICAgICAgICBpZiAodGlja2V0Lm9yZGVyX2lkKSB7XG4gICAgICAgICAgZGlzcGF0Y2goZ2V0VXNlck9yZGVycyh7IHBhZ2U6IG9yZGVyUGFnZSB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGlzcGF0Y2goZ2V0VXNlclRpY2tldHMoeyBwYWdlOiB0aWNrZXRQYWdlIH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9KTtcbiAgfTtcblxuLy8gU1VNTUlUIEFDVElPTlNcbmV4cG9ydCBjb25zdCBzZXRTdW1taXQgPSAoc3VtbWl0KSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfU1VNTUlUKShzdW1taXQpKTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XG5pbXBvcnQgeyBBZGFwdGVyRGF5anMgfSBmcm9tIFwiQG11aS94LWRhdGUtcGlja2Vycy9BZGFwdGVyRGF5anNcIjtcbmltcG9ydCB7IExvY2FsaXphdGlvblByb3ZpZGVyIH0gZnJvbSBcIkBtdWkveC1kYXRlLXBpY2tlcnMvTG9jYWxpemF0aW9uUHJvdmlkZXJcIjtcbmltcG9ydCB7IERhdGVQaWNrZXIgfSBmcm9tIFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0RBVEUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJhc2ljRGF0ZVBpY2tlcih7IG9uRmlsdGVyLCBvblJlc2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBub3cgPSBkYXlqcygpO1xuICBjb25zdCBbZGF0ZVZhbHVlLCBzZXREYXRlVmFsdWVdID0gdXNlU3RhdGUobm93KTtcbiAgY29uc3Qgb25EYXRlQ2hhbmdlID0gKHZhbCkgPT4ge1xuICAgIHNldERhdGVWYWx1ZSh2YWwpO1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWwuJGQpO1xuICAgIGNvbnN0IHsgbG93ZXIsIHVwcGVyIH0gPSBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMoZGF0ZSk7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgdHlwZTogRklMVEVSX1ZBUl9EQVRFLFxuICAgICAgbmFtZTogXCJjcmVhdGVkXCIsXG4gICAgICBkYXRlLFxuICAgICAgbG93ZXIsXG4gICAgICB1cHBlclxuICAgIH0pO1xuICB9O1xuICBjb25zdCBvblJlc2V0QWN0aW9uID0gKCkgPT4ge1xuICAgIG9uUmVzZXQoKTtcbiAgICBzZXREYXRlVmFsdWUobm93KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJEYXRlTGFiZWx9Pnt0KFwiZmlsdGVyLnB1cmNoYXNlZF9vblwiKX08L2Rpdj5cbiAgICAgIDxTdGFja1xuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRhdGVQaWNrZXJDb250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxDbG9zZUljb25cbiAgICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kYXRlcGlja2VyQ2xvc2V9XG4gICAgICAgICAgb25DbGljaz17b25SZXNldEFjdGlvbn1cbiAgICAgICAgLz5cbiAgICAgICAgPExvY2FsaXphdGlvblByb3ZpZGVyIGRhdGVBZGFwdGVyPXtBZGFwdGVyRGF5anN9PlxuICAgICAgICAgIDxEYXRlUGlja2VyXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYWxlbmRhckRpc3BsYXl9XG4gICAgICAgICAgICBvbkNoYW5nZT17b25EYXRlQ2hhbmdlfVxuICAgICAgICAgICAgdmFsdWU9e2RhdGVWYWx1ZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0xvY2FsaXphdGlvblByb3ZpZGVyPlxuICAgICAgPC9TdGFjaz5cbiAgICA8Lz5cbiAgKTtcbn1cblxuQmFzaWNEYXRlUGlja2VyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IEZpbHRlckxpc3RJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgQmFzaWNEYXRlUGlja2VyIGZyb20gXCIuL0RhdGVwaWNrZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRmlsdGVyKHsgb25GaWx0ZXIsIG9uUmVzZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93RmlsdGVyTGlzdCwgc2V0U2hvd0ZpbHRlckxpc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0RhdGVwaWNrZXIsIHNldFNob3dEYXRlcGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ZpbHRlck51bUFjdGl2ZSwgc2V0RmlsdGVyTnVtQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZmlsdGVyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoZmlsdGVyUmVmLmN1cnJlbnQgJiYgIWZpbHRlclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIGlmIChzaG93RmlsdGVyTGlzdCkge1xuICAgICAgICBzZXRTaG93RmlsdGVyTGlzdChmYWxzZSk7XG4gICAgICAgIHNldFNob3dEYXRlcGlja2VyKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dGaWx0ZXJMaXN0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dGaWx0ZXJMaXN0KCFzaG93RmlsdGVyTGlzdCk7XG4gICAgc2V0U2hvd0RhdGVwaWNrZXIoIXNob3dEYXRlcGlja2VyKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckNvbnRhaW5lcn0gcmVmPXtmaWx0ZXJSZWZ9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgICAgb25DbGljaz17dG9nZ2xlfVxuICAgICAgPlxuICAgICAgICA8RmlsdGVyTGlzdEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckljb259IC8+XG4gICAgICAgIHsvKiogY3VycmVudGx5IGp1c3Qgc2hvd2luZyBcIjFcIiBiZWNhdXNlIHdlJ3JlIGN1cnJlbnRseSBvbmx5IGZpbHRlcmluZyBvbmUgY3JpdGVyaWEgLSBjcmVhdGVkIGRhdGUgKi99XG4gICAgICAgIHtmaWx0ZXJOdW1BY3RpdmUgJiYgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJOdW1BY3RpdmV9PjE8L2Rpdj59XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckxhYmVsfT57dChcImZpbHRlci5maWx0ZXJcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZmlsdGVyTGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfSAke1xuICAgICAgICAgIHNob3dGaWx0ZXJMaXN0ID8gc3R5bGVzLnNob3dEYXRlUGlja2VyIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgID5cbiAgICAgICAgPEJhc2ljRGF0ZVBpY2tlclxuICAgICAgICAgIG9uUmVzZXQ9eygpID0+IHtcbiAgICAgICAgICAgIG9uUmVzZXQoKTtcbiAgICAgICAgICAgIHNldEZpbHRlck51bUFjdGl2ZShmYWxzZSk7XG4gICAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uRmlsdGVyPXsoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICBvbkZpbHRlcihmaWx0ZXIpO1xuICAgICAgICAgICAgc2V0RmlsdGVyTnVtQWN0aXZlKHRydWUpO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFNlYXJjaEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgSW5wdXRCYXNlIGZyb20gXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU2VhcmNoQ29udGFpbmVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIG1hcmdpblJpZ2h0OiBcIjBcIixcbiAgbWFyZ2luTGVmdDogXCIwXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbiAgZGlzcGxheTogXCJibG9ja1wiXG59KSk7XG5jb25zdCBTZWFyY2hJY29uV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCJcbn0pKTtcbmNvbnN0IFN0eWxlZElucHV0QmFzZSA9IHN0eWxlZChJbnB1dEJhc2UpKCgpID0+ICh7XG4gIGNvbG9yOiBcImluaGVyaXRcIixcbiAgYm9yZGVyQm90dG9tOiBcIjFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNDIpXCIsXG4gIHBhZGRpbmdMZWZ0OiBcIjI1cHhcIixcbiAgcGFkZGluZ1JpZ2h0OiBcIjI1cHhcIixcbiAgZm9udFNpemU6IFwiMWVtXCJcbn0pKTtcbmNvbnN0IENsb3NlSWNvbldyYXBwZXIgPSBzdHlsZWQoQ2xvc2VJY29uKSgoKSA9PiAoe1xuICBwYWRkaW5nOiBcIjJweFwiLFxuICBmb250U2l6ZTogXCIxLjVlbVwiLFxuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IFwiMFwiLFxuICByaWdodDogXCIwXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgekluZGV4OiBcIjEwMDBcIlxufSkpO1xuXG5mdW5jdGlvbiBTZWFyY2goeyBvblNlYXJjaCwgb25SZXNldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dDbG9zZSwgc2V0U2hvd0Nsb3NlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qgb25LZXlEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAga2V5LFxuICAgICAgbmF0aXZlRXZlbnQ6IHtcbiAgICAgICAgdGFyZ2V0OiB7IHZhbHVlIH1cbiAgICAgIH1cbiAgICB9ID0gZXZlbnQ7XG4gICAgaWYgKGtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICBvblNlYXJjaCh7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBuYW1lOiBcIm51bWJlclwiLFxuICAgICAgICB0eXBlOiBGSUxURVJfVkFSX09SREVSX05VTUJFUlxuICAgICAgfSk7XG4gICAgICBzZXRTaG93Q2xvc2UodHJ1ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZXNldFNlYXJjaCA9ICgpID0+IHtcbiAgICBzZXRTZWFyY2hWYWx1ZShcIlwiKTtcbiAgICBzZXRTaG93Q2xvc2UoZmFsc2UpO1xuICAgIG9uUmVzZXQoKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPFNlYXJjaENvbnRhaW5lcj5cbiAgICAgICAge3Nob3dDbG9zZSAmJiAoXG4gICAgICAgICAgPENsb3NlSWNvbldyYXBwZXIgb25DbGljaz17cmVzZXRTZWFyY2h9PlxuICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgIDwvQ2xvc2VJY29uV3JhcHBlcj5cbiAgICAgICAgKX1cbiAgICAgICAgPFNlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICAgIDxTZWFyY2hJY29uIC8+XG4gICAgICAgIDwvU2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRJbnB1dEJhc2VcbiAgICAgICAgICBwbGFjZWhvbGRlcj17dChcIm9yZGVyX3NlYXJjaC5vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgaW5wdXRQcm9wcz17eyBcImFyaWEtbGFiZWxcIjogXCJzZWFyY2hcIiB9fVxuICAgICAgICAgIHZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFZhbHVlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgLz5cbiAgICAgIDwvU2VhcmNoQ29udGFpbmVyPlxuICAgIDwvQm94PlxuICApO1xufVxuXG5TZWFyY2gucHJvcFR5cGVzID0ge1xuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWFyY2g7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbXBvcnRFeHBvcnRJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBTb3J0KHsgb25Tb3J0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd1NvcnQsIHNldFNob3dTb3J0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc29ydFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlU29ydENsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChzb3J0UmVmLmN1cnJlbnQgJiYgIXNvcnRSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBzZXRTaG93U29ydChmYWxzZSk7XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dTb3J0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dTb3J0KCFzaG93U29ydCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5zb3J0Q29udGFpbmVyfSBvbkNsaWNrPXt0b2dnbGV9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIHJlZj17c29ydFJlZn1cbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgPlxuICAgICAgICA8SW1wb3J0RXhwb3J0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuc29ydEljb259IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRMYWJlbH0+e3QoXCJzb3J0LnNvcnRcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIHtzaG93U29ydCAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtgJHtzdHlsZXMuc29ydExpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn1gfT5cbiAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfSBvbkNsaWNrPXsoKSA9PiBvblNvcnQoXCJkZXNjXCIpfT5cbiAgICAgICAgICAgIHt0KFwic29ydC5uZXdfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0gb25DbGljaz17KCkgPT4gb25Tb3J0KFwiYXNjXCIpfT5cbiAgICAgICAgICAgIHt0KFwic29ydC5vbGRfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgU29ydDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwiLi9GaWx0ZXJcIjtcbmltcG9ydCBTb3J0IGZyb20gXCIuL1NvcnRcIjtcbmltcG9ydCBTZWFyY2ggZnJvbSBcIi4vU2VhcmNoXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEZpbHRlclNvcnRTZWFyY2goeyBvbkZpbHRlciwgb25Tb3J0LCBvblNlYXJjaCwgb25SZXNldCB9KSB7XG4gIHJldHVybiAoXG4gICAgPEdyaWQgY29udGFpbmVyIGp1c3RpZnk9XCJmbGV4LWVuZFwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgIDxHcmlkXG4gICAgICAgIGl0ZW1cbiAgICAgICAgeHM9ezZ9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBnYXA9ezJ9XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlclNvcnRDb250YWluZXJ9XG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxGaWx0ZXIgb25GaWx0ZXI9e29uRmlsdGVyfSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPFNvcnQgb25Tb3J0PXtvblNvcnR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGl0ZW0geHM9ezZ9IGNvbnRhaW5lciBqdXN0aWZ5Q29udGVudD1cImZsZXgtZW5kXCI+XG4gICAgICAgIDxTZWFyY2ggb25TZWFyY2g9e29uU2VhcmNofSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgKTtcbn1cblxuRmlsdGVyU29ydFNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Tb3J0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyU29ydFNlYXJjaDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IEZpbHRlclNvcnRTZWFyY2ggZnJvbSBcIi4vRmlsdGVyU29ydFNlYXJjaFwiO1xuaW1wb3J0IE9yZGVyc0xpc3QgZnJvbSBcIi4vT3JkZXJzTGlzdFwiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgZ2V0VXNlck9yZGVycywgcmVzZXRGaWx0ZXIgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBNeU9yZGVyc1RpY2tldHMoKSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIG1lbWJlck9yZGVycyxcbiAgICBvcmRlcnNfY3VycmVudF9wYWdlLFxuICAgIG9yZGVyc19wZXJfcGFnZSxcbiAgICBvcmRlcnNfdG90YWxcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG4gIGNvbnN0IFtoYXNNb3JlLCBzZXRIYXNNb3JlXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbc2VhcmNoTmV4dCwgc2V0U2VhcmNoTmV4dF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmaWx0ZXIsIHNldEZpbHRlcl0gPSB1c2VTdGF0ZSh7fSk7XG4gIGNvbnN0IFtzb3J0LCBzZXRTb3J0XSA9IHVzZVN0YXRlKHt9KTtcblxuICBjb25zdCBvblJlc2V0ID0gKCkgPT4ge1xuICAgIHNldFNvcnQoe30pO1xuICAgIHNldEZpbHRlcih7fSk7XG4gICAgc2V0U2VhcmNoTmV4dChmYWxzZSk7XG4gICAgZGlzcGF0Y2gocmVzZXRGaWx0ZXIoKSk7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hEYXRhID0gYXN5bmMgKCkgPT4ge1xuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlck9yZGVycyh7XG4gICAgICAgIHBhZ2U6IG9yZGVyc19jdXJyZW50X3BhZ2UsXG4gICAgICAgIHBlclBhZ2U6IG9yZGVyc19wZXJfcGFnZSxcbiAgICAgICAgbmV4dDogc2VhcmNoTmV4dCxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICkudGhlbigocmVzKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHJlcy5yZXNwb25zZT8uZGF0YT8ubGVuZ3RoID4gb3JkZXJzX3Blcl9wYWdlICYmXG4gICAgICAgIG1lbWJlck9yZGVycy5sZW5ndGggPT09IG9yZGVyc190b3RhbFxuICAgICAgKVxuICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKTtcbiAgICB9KTtcbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaERhdGEoKTtcbiAgfSwgW2ZpbHRlciwgc29ydCwgc2VhcmNoTmV4dF0pO1xuXG4gIGNvbnN0IG9uRmlsdGVyID0gKGZpbHRlcikgPT4ge1xuICAgIHNldFNvcnQoe30pO1xuICAgIHNldEZpbHRlcihmaWx0ZXIpO1xuICB9O1xuICBjb25zdCBvblNvcnQgPSAoZGlyZWN0aW9uKSA9PiB7XG4gICAgc2V0RmlsdGVyKHt9KTtcbiAgICBzZXRTb3J0KHsgZGlyZWN0aW9uLCBuYW1lOiBcImNyZWF0ZWRcIiB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8RmlsdGVyU29ydFNlYXJjaFxuICAgICAgICBvbkZpbHRlcj17b25GaWx0ZXJ9XG4gICAgICAgIG9uU29ydD17b25Tb3J0fVxuICAgICAgICBvblNlYXJjaD17b25GaWx0ZXJ9XG4gICAgICAgIG9uUmVzZXQ9e29uUmVzZXR9XG4gICAgICAvPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy53aWRnZXRIZWFkZXJ9XG4gICAgICAgIHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19XG4gICAgICA+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PntzdW1taXQ/Lm5hbWV9PC9oMj5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+XG4gICAgICAgICAge2dldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KX1cbiAgICAgICAgPC9oMj5cbiAgICAgIDwvQm94PlxuICAgICAge21lbWJlck9yZGVycy5sZW5ndGggPyAoXG4gICAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICAgIGRhdGFMZW5ndGg9e21lbWJlck9yZGVycy5sZW5ndGh9XG4gICAgICAgICAgbmV4dD17KCkgPT4gc2V0U2VhcmNoTmV4dCh0cnVlKX1cbiAgICAgICAgICBoYXNNb3JlPXtoYXNNb3JlfVxuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgPlxuICAgICAgICAgIHttZW1iZXJPcmRlcnM/Lm1hcCgob3JkZXIpID0+IChcbiAgICAgICAgICAgIDxPcmRlcnNMaXN0IGtleT17b3JkZXIuaWR9IG9yZGVyPXtvcmRlcn0gc3VtbWl0PXtzdW1taXR9IC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvSW5maW5pdGVTY3JvbGw+XG4gICAgICApIDogKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm5vT3JkZXJzRm91bmR9Pnt0KFwib3JkZXJzLm5vX29yZGVyc1wiKX08L0JveD5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc1RpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IERpdmlkZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlT3JkZXJUb3RhbHMsIGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE9yZGVyU3VtbWFyeVRhYmxlKHsgb3JkZXIsIHN1bW1pdCwgdGlja2V0cyB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBkaXNjb3VudFRvdGFsLCByZWZ1bmRUb3RhbCwgdGF4ZXNUb3RhbCwgYW1vdW50VG90YWwsIHRpY2tldFN1bW1hcnkgfSA9XG4gICAgY2FsY3VsYXRlT3JkZXJUb3RhbHMoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pO1xuICBjb25zdCBodW5kcmVkID0gMTAwO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlUYWJsZX0+XG4gICAgICB7dGlja2V0U3VtbWFyeT8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3RpY2tldFN1bW1hcnkubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpY2tldFRvdGFsID1cbiAgICAgICAgICAgICAgKHRpY2tldC5xdHkgKiAodGlja2V0LnRpY2tldF90eXBlLmNvc3QgKiBodW5kcmVkKSkgLyBodW5kcmVkO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGtleT17YHRpeG9yZGVyXyR7dGlja2V0LnRpY2tldF90eXBlLmNyZWF0ZWR9YH1cbiAgICAgICAgICAgICAgICBzeD17eyBwYjogMSB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgeHt0aWNrZXQucXR5fSB7dGlja2V0LnRpY2tldF90eXBlLm5hbWV9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXRUb3RhbCwgeyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfSl9XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuZGlzY291bnRfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5kaXNjb3VudHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIC17ZGlzY291bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIudGF4ZXNfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS50YXhlc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3RheGVzVG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge29yZGVyLnN0YXR1cyA9PT0gXCJQYWlkXCIgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuYW1vdW50X3BhaWRcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIC17YW1vdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge3JlZnVuZFRvdGFsID4gMCAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7cmVmdW5kVG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPERpdmlkZXIgLz5cbiAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwdDogMSwgcGI6IDEgfX0+XG4gICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS50b3RhbFwiKX1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAge29yZGVyLnN0YXR1cyA9PT0gXCJQYWlkXCIgPyBcIiQwLjAwXCIgOiBhbW91bnRUb3RhbH1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgIDwvQm94PlxuICApO1xufVxuXG5PcmRlclN1bW1hcnlUYWJsZS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGN1cnJlbmN5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2NvdW50X2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0YXhlc19hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeVRhYmxlO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gUmVmdW5kRW1haWxTdXBwb3J0KHtcbiAgb25SZWZ1bmRDbGljayxcbiAgb25SZWZ1bmREZXRhaWxDbGljayxcbiAgb25FbWFpbFN1cHBvcnRDbGlja1xufSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kX2RldGFpbHNcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvbkVtYWlsU3VwcG9ydENsaWNrfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX2luZm8uZW1haWxfc3VwcG9ydFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvPlxuICApO1xufVxuXG5SZWZ1bmRFbWFpbFN1cHBvcnQucHJvcFR5cGVzID0ge1xuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2s6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRFbWFpbFN1cHBvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeVRhYmxlIGZyb20gXCIuL09yZGVyU3VtbWFyeVRhYmxlXCI7XG5pbXBvcnQgUmVmdW5kRW1haWxTdXBwb3J0IGZyb20gXCIuL1JlZnVuZEVtYWlsU3VwcG9ydFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlclN1bW1hcnkoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVdyYXBwZXJ9IHN4PXt7IHB0OiA0LCBweDogNCB9fT5cbiAgICAgICAgPGgzPnt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9zdW1tYXJ5XCIpfTwvaDM+XG4gICAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgeHM9ezEyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb31cbiAgICAgICAgICAgIHN4PXt7IHBiOiAzIH19XG4gICAgICAgICAgICBpdGVtXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE9yZGVyU3VtbWFyeVRhYmxlXG4gICAgICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IHhzPXsxMn0gc3g9e3sgcGI6IDMgfX0+XG4gICAgICAgIDxSZWZ1bmRFbWFpbFN1cHBvcnRcbiAgICAgICAgICBvblJlZnVuZENsaWNrPXsoKSA9PiB7fX1cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXsoKSA9PiB7fX1cbiAgICAgICAgICBvbkVtYWlsU3VwcG9ydENsaWNrPXsoKSA9PiB7fX1cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xufVxuXG5PcmRlclN1bW1hcnkucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnk7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgeyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE9yZGVyTGlzdEl0ZW0oeyB0aWNrZXRzLCB0b3RhbCwgb25QYWdpbmF0ZUNsaWNrLCBzdW1taXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpdGVtc1RvRGlzcGxheSwgc2V0SXRlbXNUb0Rpc3BsYXldID0gdXNlU3RhdGUoXG4gICAgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UXG4gICk7XG4gIGNvbnN0IHNsaWNlZFRpY2tldHMgPSB0aWNrZXRzPy5zbGljZSgwLCBpdGVtc1RvRGlzcGxheSk7XG4gIGNvbnN0IG9uVmlld01vcmUgPSAoKSA9PiB7XG4gICAgaWYgKHRvdGFsID4gdGlja2V0cy5sZW5ndGgpIHtcbiAgICAgIG9uUGFnaW5hdGVDbGljaygpO1xuICAgIH1cbiAgICBzZXRJdGVtc1RvRGlzcGxheShpdGVtc1RvRGlzcGxheSArIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG4gIH07XG5cbiAgY29uc3Qgb25WaWV3TGVzcyA9ICgpID0+IHNldEl0ZW1zVG9EaXNwbGF5KFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3NsaWNlZFRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgIDxPcmRlckxpc3RUaWNrZXRzIGtleT17dGlja2V0LmlkfSB0aWNrZXQ9e3RpY2tldH0gc3VtbWl0PXtzdW1taXR9IC8+XG4gICAgICApKX1cbiAgICAgIHt0aWNrZXRzPy5sZW5ndGggPiBpdGVtc1RvRGlzcGxheSA/IChcbiAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn0gb25DbGljaz17b25WaWV3TW9yZX0+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X21vcmVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5sZW5ndGggPiBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgJiZcbiAgICAgIHNsaWNlZFRpY2tldHM/Lmxlbmd0aCA9PT0gdG90YWwgPyAoXG4gICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259IG9uQ2xpY2s9e29uVmlld0xlc3N9PlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19sZXNzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG5cbk9yZGVyTGlzdEl0ZW0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RJdGVtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBHcmlkLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCBPcmRlck51bWJlciBmcm9tIFwiLi9PcmRlck51bWJlclwiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlLCB1c2VOb3cgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuZnVuY3Rpb24gT3JkZXJMaXN0VGlja2V0cyh7IHRpY2tldCwgc3VtbWl0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgZ2V0QWN0aXZlQnV0dG9uQWN0aW9ucyA9ICh0aWNrZXQpID0+IHtcbiAgICBpZiAodGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdGaW5pc2hUaWNrZXRCdXR0b259PlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5maW5pc2hfdGlja2V0XCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJDb21wbGV0ZVwiKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdGaW5pc2hUaWNrZXRCdXR0b259PlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbiAgY29uc3Qgc2hvd1JlYXNzaWduQnV0dG9uID0gKCkgPT4ge1xuICAgIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICAgIGNvbnN0IGlzUmVhc3NpZ25hYmxlID0gcmVhc3NpZ25EYXRlID4gbm93O1xuICAgIHJldHVybiBpc1JlYXNzaWduYWJsZSA/IChcbiAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMucmVhc3NpZ25CdXR0b259PlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMucmVhc3NpZ25fdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgKSA6IChcbiAgICAgIFwiXCJcbiAgICApO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxHcmlkIGtleT17dGlja2V0LmlkfSBjbGFzc05hbWU9e3N0eWxlcy5vcmRlcldyYXBwZXJ9IGNvbnRhaW5lcj5cbiAgICAgIDxHcmlkIHhzPXs3fSBwYWRkaW5nPXsyfSBpdGVtIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFRpY2tldFR5cGV9PlxuICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezV9IHBhZGRpbmc9ezJ9IGl0ZW0+XG4gICAgICAgIHsvKiBUbyBhZGQgYmFkZ2UgZmVhdHVyZXMgKi99XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCB4cz17MTJ9IHN4PXt7IHB4OiAyLCBwYjogMiB9fSBpdGVtPlxuICAgICAgICB7dGlja2V0Lm93bmVyPy5lbWFpbCA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF90b1wiKX06XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0T3duZXJFbWFpbH0+e3RpY2tldC5vd25lcj8uZW1haWx9PC9Cb3g+XG4gICAgICAgICAgPC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgdGlja2V0LmlzX2FjdGl2ZSAmJiAoXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfT5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmF0dGVuZGVlX3N0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIClcbiAgICAgICAgKX1cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8T3JkZXJOdW1iZXIgbnVtYmVyPXt0aWNrZXQubnVtYmVyfSBjb3B5IHRydW5jYXRlZCAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBkaXJlY3Rpb249XCJyb3dcIiB4cz17MTJ9IGxnPXs2fSBhbGlnbkl0ZW1zPVwiY2VudGVyXCIgaXRlbT5cbiAgICAgICAgICA8VGlja2V0U3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHBhZGRpbmc9ezJ9IHhzPXsxMn0gbGc9ezZ9IGNvbnRhaW5lciBpdGVtPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgIGFsaWduPVwiY2VudGVyXCJcbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldEFjdGlvbkJ1dHRvbnN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3RpY2tldC5pc19hY3RpdmUgJiZcbiAgICAgICAgICAgICAgKHRpY2tldC5vd25lciA/IChcbiAgICAgICAgICAgICAgICA8U3RhY2tcbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgICAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtnZXRBY3RpdmVCdXR0b25BY3Rpb25zKHRpY2tldCl9XG4gICAgICAgICAgICAgICAgICB7c2hvd1JlYXNzaWduQnV0dG9uKCl9XG4gICAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnblRpY2tldEJ1dHRvbn0+XG4gICAgICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduX3RpY2tldFwiKX1cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufVxuXG5PcmRlckxpc3RUaWNrZXRzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdG90YWxfcmVmdW5kZWRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRpY2tldF90eXBlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IENvbnRlbnRDb3B5SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlck51bWJlcih7IG51bWJlciwgY29weSA9IGZhbHNlLCB0cnVuY2F0ZWQgPSBmYWxzZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldE5vQ29udGFpbmVyfT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17dHJ1bmNhdGVkICYmIHN0eWxlcy5vcmRlclRpY2tldE51bWJlclRydW5jYXRlZH0+XG4gICAgICAgIHtudW1iZXJ9XG4gICAgICA8L3NwYW4+XG4gICAgICB7Y29weSAmJiAoXG4gICAgICAgIDxDb250ZW50Q29weUljb25cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb3B5SWNvbn1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChudW1iZXIpfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuT3JkZXJOdW1iZXIucHJvcFR5cGVzID0ge1xuICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNvcHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlck51bWJlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBUYWJzIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYnNcIjtcbmltcG9ydCBUYWIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFiXCI7XG5pbXBvcnQgRXJyb3JJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCI7XG5pbXBvcnQgT3JkZXJMaXN0SXRlbSBmcm9tIFwiLi9PcmRlckxpc3RJdGVtXCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5IGZyb20gXCIuLi9PcmRlclN1bW1hcnlcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gVGFiUGFuZWwocHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgdmFsdWUsIGluZGV4IH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgaGlkZGVuPXt2YWx1ZSAhPT0gaW5kZXh9XG4gICAgICBpZD17YHRhYnBhbmVsLSR7aW5kZXh9YH1cbiAgICAgIGFyaWEtbGFiZWxsZWRieT17YHRhYi0ke2luZGV4fWB9XG4gICAgPlxuICAgICAge3ZhbHVlID09PSBpbmRleCAmJiBjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUoe1xuICBpc01vYmlsZSxcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICBvcmRlcixcbiAgdG90YWwsXG4gIGRldGFpbHNSZXF1aXJlZCxcbiAgb25QYWdpbmF0ZUNsaWNrXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKF8sIG5ld1ZhbHVlKSA9PiB7XG4gICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IG1vcmVEZXRhaWxzID0gKCkgPT5cbiAgICBkZXRhaWxzUmVxdWlyZWQgJiYgKFxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZGV0YWlsc1JlcXVpcmVkTGFiZWx9PlxuICAgICAgICA8RXJyb3JJY29uIHN4PXt7IGNvbG9yOiBcIiNGRjk4MDBcIiB9fSAvPlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2RldGFpbHNfcmVxdWlyZWRcIil9XG4gICAgICA8L3NwYW4+XG4gICAgKTtcblxuICByZXR1cm4gaXNNb2JpbGUgPyAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfT5cbiAgICAgIDxCb3ggc3g9e3sgYm9yZGVyQ29sb3I6IFwiZGl2aWRlclwiLCBwYjogMiB9fT5cbiAgICAgICAgPFRhYnNcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICB0ZXh0Q29sb3I9XCIjMDAwXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGlja2V0cyAmIFN1bW1hcnlcIlxuICAgICAgICAgIFRhYkluZGljYXRvclByb3BzPXt7XG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBcIiMwMDBcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnRpY2tldHNcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5zdW1tYXJ5XCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICA8L1RhYnM+XG4gICAgICA8L0JveD5cbiAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezB9PlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICB0aWNrZXRzPXt0aWNrZXRzfVxuICAgICAgICAgIHRvdGFsPXt0b3RhbH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnkgb3JkZXI9e29yZGVyfSBzdW1taXQ9e3N1bW1pdH0gdGlja2V0cz17dGlja2V0c30gLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgPD5cbiAgICAgIDxHcmlkIGl0ZW0gbWQ9ezEyfT5cbiAgICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZFxuICAgICAgICBwYWRkaW5nPXsyfVxuICAgICAgICBpdGVtXG4gICAgICAgIG1kPXs3fVxuICAgICAgICBvcmRlcj17eyBtZDogMSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICB0aWNrZXRzPXt0aWNrZXRzfVxuICAgICAgICAgIHRvdGFsPXt0b3RhbH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHBhZGRpbmc9ezJ9IGl0ZW0gbWQ9ezV9IG9yZGVyPXt7IG1kOiAxIH19PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5IG9yZGVyPXtvcmRlcn0gc3VtbWl0PXtzdW1taXR9IHRpY2tldHM9e3RpY2tldHN9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0T3JkZXJUaWNrZXRzLCBnZXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuL09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgZnJvbSBcIi4vT3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcIjtcblxuZnVuY3Rpb24gT3JkZXJzTGlzdChwcm9wcykge1xuICBjb25zdCB7IHN1bW1pdCwgb3JkZXIgfSA9IHByb3BzO1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyBwZXJfcGFnZSwgbGFzdF9wYWdlLCBtZW1iZXJPcmRlcnMgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG4gIGNvbnN0IFtpc01vYmlsZVZpZXdhYmxlLCBzZXRNb2JpbGVWaWV3YWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGRldGFpbHNSZXF1aXJlZCA9IG9yZGVyLm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgKHRpY2tldCkgPT4gdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiXG4gICk7XG4gIGNvbnN0IGZldGNoVGlja2V0c0J5T3JkZXIgPSBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBjdXJyZW50X3BhZ2U6IGxhc3RfcGFnZSxcbiAgICAgICAgcGVyUGFnZTogcGVyX3BhZ2VcbiAgICAgIH0pXG4gICAgKS5jYXRjaCgoZSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaFRpY2tldHNCeU9yZGVyKCk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvblBhZ2luYXRlQ2xpY2sgPSAoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgcGFnZTogb3JkZXIudGlja2V0c19wYWdlX2N1cnJlbnQgKyBPTkVfUEFHRV9ORVhULFxuICAgICAgICBwZXJQYWdlOiBwZXJfcGFnZSxcbiAgICAgICAgbmV4dDogdHJ1ZVxuICAgICAgfSlcbiAgICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiAxLFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvfT5cbiAgICAgICAgICB7dChcIm9yZGVycy5wdXJjaGFzZWRcIil9OiB7Z2V0Rm9ybWF0dGVkRGF0ZShvcmRlci5jcmVhdGVkKX0gfHtcIiBcIn1cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8T3JkZXJOdW1iZXIgbnVtYmVyPXtvcmRlci5udW1iZXJ9IGNvcHkgdHJ1bmNhdGVkIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAge2lzTW9iaWxlICYmIChcbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBzeD17eyBwYWRkaW5nOiAwIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5ibGFja0J1dHRvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE1vYmlsZVZpZXdhYmxlKCFpc01vYmlsZVZpZXdhYmxlKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aXNNb2JpbGVWaWV3YWJsZVxuICAgICAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmhpZGVfdGlja2V0c1wiKVxuICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0c1wiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEdyaWRcbiAgICAgICAga2V5PXtvcmRlci5pZH1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIHJvd1NwYWNpbmc9ezF9XG4gICAgICAgIGNvbHVtblNwYWNpbmc9e3sgeHM6IDEsIHNtOiAyLCBtZDogMyB9fVxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclRpY2tldENvbnRhaW5lcn0gJHtcbiAgICAgICAgICBpc01vYmlsZSAmJiAhaXNNb2JpbGVWaWV3YWJsZSA/IHN0eWxlcy5kaXNwbGF5X25vbmUgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgICBzeD17e1xuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IHtcbiAgICAgICAgICAgIG1kOiBcInJvd1wiLFxuICAgICAgICAgICAgbGc6IFwicm93XCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDAsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlXG4gICAgICAgICAgaXNNb2JpbGU9e2lzTW9iaWxlfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICB0aWNrZXRzPXtnZXRPcmRlclRpY2tldHMobWVtYmVyT3JkZXJzLCBvcmRlci5pZCl9XG4gICAgICAgICAgdG90YWw9e29yZGVyLnRpY2tldHNfdG90YWx9XG4gICAgICAgICAgZGV0YWlsc1JlcXVpcmVkPXtkZXRhaWxzUmVxdWlyZWR9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC8+XG4gICk7XG59XG5cbk9yZGVyc0xpc3QucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBUaWNrZXRTdGF0dXMoeyB0aWNrZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgcmVmdW5kX3JlcXVlc3RzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cy5maW5kKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJSZXF1ZXN0ZWRcIlxuICApO1xuICBjb25zdCB0aWNrZXRfc3RhdHVzX2luY29tcGxldGUgPSB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCI7XG4gIGNvbnN0IHRpY2tldF91bmFzc2lnbmVkID0gdGlja2V0Lm93bmVyX2lkID09PSAwO1xuICBjb25zdCB0aWNrZXRfY29tcGxldGUgPSB0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiQ29tcGxldGVcIjtcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0U3RhdHVzQ29udGFpbmVyfT5cbiAgICAgIHtpc0FjdGl2ZSA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7cmVmdW5kX3JlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uUmVmdW5kUmVxdWVzdGVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfcmVmdW5kX3JlcXVlc3RlZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge3RpY2tldF9zdGF0dXNfaW5jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkluY29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19pbmNvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7dGlja2V0X3VuYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25VbmFzc2lnbmVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge3RpY2tldF9jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNvbXBsZXRlfWB9PlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC8+XG4gICAgICApIDogKFxuICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNhbmNlbGxlZH1gfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufVxuXG5UaWNrZXRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICByZWZ1bmRfcmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgeyBMT0dPVVRfVVNFUiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFJFU0VUX1NUQVRFLFxuICBSRVNFVF9GSUxURVIsXG4gIFNFVF9TVU1NSVQsXG4gIFNFVF9VU0VSLFxuICBHRVRfVVNFUl9PUkRFUlMsXG4gIEdFVF9USUNLRVRTX0JZX09SREVSXG59IGZyb20gXCIuL2FjdGlvbnNcIjtcbmltcG9ydCB7IEZJUlNUX1BBR0UgfSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuY29uc3QgREVGQVVMVF9TVEFURSA9IHtcbiAgc3VtbWl0OiBudWxsLFxuICB1c2VyOiB7fSxcbiAgd2lkZ2V0TG9hZGluZzogZmFsc2UsXG4gIG1lbWJlck9yZGVyczogW10sXG4gIGVycm9yczoge30sXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBpc09yZGVyTG9hZGluZzogZmFsc2UsXG4gIG9yZGVyc19jdXJyZW50X3BhZ2U6IDEsXG4gIG9yZGVyc19sYXN0X3BhZ2U6IDEsXG4gIG9yZGVyc19wZXJfcGFnZTogNSxcbiAgb3JkZXJzX3RvdGFsOiAwLFxuICB0aWNrZXRfY3VycmVudF9wYWdlOiAxLFxuICB0aWNrZXRfbGFzdF9wYWdlOiAxLFxuICB0aWNrZXRfcGVyX3BhZ2U6IDUsXG4gIHRpY2tldF90b3RhbDogMFxufTtcblxuY29uc3QgV2lkZ2V0UmVkdWNlciA9IChzdGF0ZSA9IERFRkFVTFRfU1RBVEUsIHsgdHlwZSwgcGF5bG9hZCB9ID0ge30pID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBMT0dPVVRfVVNFUjpcbiAgICBjYXNlIFJFU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIERFRkFVTFRfU1RBVEU7XG4gICAgY2FzZSBSRVNFVF9GSUxURVI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogMVxuICAgICAgfTtcbiAgICBjYXNlIFNFVF9TVU1NSVQ6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgc3VtbWl0OiBwYXlsb2FkIH07XG4gICAgY2FzZSBTRVRfVVNFUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCB1c2VyOiBwYXlsb2FkIH07XG4gICAgY2FzZSBHRVRfVVNFUl9PUkRFUlM6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5tZW1iZXJPcmRlcnMsIC4uLmRhdGFdLFxuICAgICAgICBvcmRlcnNfdG90YWw6IHRvdGFsLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1RJQ0tFVFNfQllfT1JERVI6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgZm9ybWVyT3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZCgobykgPT4gby5pZCA9PT0gZGF0YVswXT8ub3JkZXJfaWQpO1xuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5mb3JtZXJPcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV0sXG4gICAgICAgIHRpY2tldHNfcGFnZV9jdXJyZW50OiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfdG90YWw6IHRvdGFsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdpZGdldFJlZHVjZXI7XG4iLCJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb25maWd1cmVTdG9yZSB9IGZyb20gXCJAcmVkdXhqcy90b29sa2l0XCI7XG5pbXBvcnQge1xuICBwZXJzaXN0U3RvcmUsXG4gIHBlcnNpc3RSZWR1Y2VyLFxuICBGTFVTSCxcbiAgUkVIWURSQVRFLFxuICBQQVVTRSxcbiAgUEVSU0lTVCxcbiAgUFVSR0UsXG4gIFJFR0lTVEVSXG59IGZyb20gXCJyZWR1eC1wZXJzaXN0XCI7XG5pbXBvcnQgc3RvcmFnZSBmcm9tIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiO1xuaW1wb3J0IHsgY29tYmluZVJlZHVjZXJzIH0gZnJvbSBcInJlZHV4XCI7XG5pbXBvcnQgV2lkZ2V0UmVkdWNlciBmcm9tIFwiLi9yZWR1Y2VyXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRTdG9yZSA9ICh7IGNsaWVudElkLCBsb2dpblVybCwgc3VtbWl0LCBhcGlCYXNlVXJsIH0pID0+IHtcbiAgLy8gdG8gYWRkIG90aGVyIHJlZHVjZXJzIGxhdGVyXG4gIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAgICB3aWRnZXRTdGF0ZTogV2lkZ2V0UmVkdWNlclxuICB9KTtcblxuICBjb25zdCBzdG9yZSA9IGNvbmZpZ3VyZVN0b3JlKHtcbiAgICByZWR1Y2VyOiBwZXJzaXN0UmVkdWNlcihcbiAgICAgIHtcbiAgICAgICAga2V5OiBgcm9vdF9teV9vcmRlcnNfdGlja2V0c18ke2NsaWVudElkfWAsXG4gICAgICAgIHN0b3JhZ2VcbiAgICAgIH0sXG4gICAgICByZWR1Y2Vyc1xuICAgICksXG4gICAgbWlkZGxld2FyZTogKGdldERlZmF1bHRNaWRkbGV3YXJlKSA9PlxuICAgICAgZ2V0RGVmYXVsdE1pZGRsZXdhcmUoe1xuICAgICAgICB0aHVuazoge1xuICAgICAgICAgIGV4dHJhQXJndW1lbnQ6IHtcbiAgICAgICAgICAgIGNsaWVudElkLFxuICAgICAgICAgICAgYXBpQmFzZVVybCxcbiAgICAgICAgICAgIHN1bW1pdCxcbiAgICAgICAgICAgIGxvZ2luVXJsXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiZXhwb3J0IGNvbnN0IExBU1RfSE9VUl9PRl8yNF9IT1VSID0gMjM7XG5leHBvcnQgY29uc3QgTEFTVF9NSU5VVEVfT0ZfSE9VUiA9IDU5O1xuZXhwb3J0IGNvbnN0IE9ORV9QQUdFX05FWFQgPSAxO1xuZXhwb3J0IGNvbnN0IE1JTExJU0VDX1RPX1NFQyA9IDEwMDA7XG5leHBvcnQgY29uc3QgT05FX0RBWSA9IDE7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JVEVNU19QRVJfUEFHRSA9IDU7XG5leHBvcnQgY29uc3QgRklSU1RfUEFHRSA9IDE7XG5leHBvcnQgY29uc3QgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UID0gMztcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIExBU1RfSE9VUl9PRl8yNF9IT1VSLFxuICBMQVNUX01JTlVURV9PRl9IT1VSLFxuICBNSUxMSVNFQ19UT19TRUMsXG4gIE9ORV9EQVlcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXJyZW5jeSA9ICh2YWx1ZSwgeyBsb2NhbGUgPSBcImVuLVVTXCIsIC4uLm9wdGlvbnMgfSkgPT4ge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBjdXJyZW5jeTogXCJVU0RcIixcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gIH07XG5cbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgIHN0eWxlOiBcImN1cnJlbmN5XCIsXG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcblxuICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkRGF0ZSA9IChkYXRldGltZSwgdGltZVpvbmUpID0+IHtcbiAgaWYgKHRpbWVab25lKVxuICAgIHJldHVybiBtb21lbnRcbiAgICAgIC50eihkYXRldGltZSAqIE1JTExJU0VDX1RPX1NFQywgdGltZVpvbmUpXG4gICAgICAuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcblxuICByZXR1cm4gbW9tZW50LnVuaXgoZGF0ZXRpbWUpLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHN0YXJ0RGF5ID0gbW9tZW50KHN1bW1pdC5zdGFydF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGVuZERheSA9IG1vbWVudChzdW1taXQuZW5kX2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5cyA9IGVuZERheS5kaWZmKHN0YXJ0RGF5LCBcImRheXNcIik7XG4gIGxldCBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgbGV0IGZvcm1hdEVuZERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgaWYgKHN0YXJ0RGF5LnllYXIoKSA9PT0gZW5kRGF5LnllYXIoKSkgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIEREXCI7XG4gIGlmIChzdGFydERheS5tb250aCgpID09PSBlbmREYXkubW9udGgoKSkgZm9ybWF0RW5kRGF0ZSA9IFwiREQsIFlZWVlcIjtcblxuICBjb25zdCBzdGFydERhdGUgPSBzdGFydERheS5mb3JtYXQoZm9ybWF0U3RhcnREYXRlKTtcbiAgY29uc3QgZW5kRGF0ZSA9IGVuZERheS5mb3JtYXQoZm9ybWF0RW5kRGF0ZSk7XG5cbiAgaWYgKGRheXMgPiBPTkVfREFZKSByZXR1cm4gYCR7c3RhcnREYXRlfSAtICR7ZW5kRGF0ZX1gO1xuXG4gIHJldHVybiBzdGFydERhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlT3JkZXJUb3RhbHMgPSAoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pID0+IHtcbiAgaWYgKCFvcmRlciB8fCAhc3VtbWl0IHx8ICF0aWNrZXRzKSByZXR1cm4ge307XG5cbiAgY29uc3QgeyByZWZ1bmRlZF9hbW91bnQsIGRpc2NvdW50X2Ftb3VudCwgdGF4ZXNfYW1vdW50LCBhbW91bnQgfSA9IG9yZGVyO1xuICBjb25zdCB7IHRpY2tldF90eXBlcyB9ID0gc3VtbWl0O1xuXG4gIGNvbnN0IHRpY2tldFN1bW1hcnkgPSBbXTtcbiAgbGV0IHB1cmNoYXNlVGlja2V0VG90YWwgPSAwO1xuXG4gIGNvbnN0IGN1cnJlbmN5T2JqZWN0ID0geyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfTtcblxuICBPYmplY3Qua2V5cyhvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUpLm1hcCgodGlja2V0KSA9PiB7XG4gICAgY29uc3QgdGlja2V0VHlwZSA9IHRpY2tldF90eXBlcy5maW5kKCh0dCkgPT4gdHQubmFtZSA9PT0gdGlja2V0KTtcbiAgICB0aWNrZXRTdW1tYXJ5LnB1c2goe1xuICAgICAgdGlja2V0X3R5cGVfaWQ6IHRpY2tldFR5cGUuaWQsXG4gICAgICB0aWNrZXRfdHlwZTogdGlja2V0VHlwZSxcbiAgICAgIG5hbWU6IHRpY2tldCxcbiAgICAgIHF0eTogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF1cbiAgICB9KTtcbiAgICBwdXJjaGFzZVRpY2tldFRvdGFsICs9XG4gICAgICB0aWNrZXRUeXBlLmNvc3QgKiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XTtcblxuICAgIHJldHVybiB0aWNrZXRTdW1tYXJ5O1xuICB9KTtcblxuICBjb25zdCBwdXJjaGFzZVRvdGFsID0gZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUaWNrZXRUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIGNvbnN0IGRpc2NvdW50VG90YWwgPSBmb3JtYXRDdXJyZW5jeShkaXNjb3VudF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgcmVmdW5kVG90YWwgPSBmb3JtYXRDdXJyZW5jeShyZWZ1bmRlZF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgdGF4ZXNUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHRheGVzX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCBhbW91bnRUb3RhbCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcmRlciwgXCJhbW91bnRcIilcbiAgICA/IGZvcm1hdEN1cnJlbmN5KGFtb3VudCwgY3VycmVuY3lPYmplY3QpXG4gICAgOiBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNjb3VudFRvdGFsLFxuICAgIHJlZnVuZFRvdGFsLFxuICAgIHRheGVzVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgdGlja2V0U3VtbWFyeVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9yZGVyVGlja2V0cyA9IChtZW1iZXJPcmRlcnMsIG9yZGVySWQpID0+IHtcbiAgY29uc3Qgb3JkZXJzID0gbWVtYmVyT3JkZXJzLmZpbHRlcigobykgPT4gby5pZCA9PT0gb3JkZXJJZCk7XG4gIHJldHVybiBvcmRlcnNbMF0/Lm1lbWJlclRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzID0gKHRzKSA9PiB7XG4gIGNvbnN0IGxvd2VyID0gdHMuc2V0SG91cnMoMCwgMCwgMCwgMCkgLyBNSUxMSVNFQ19UT19TRUM7XG4gIGNvbnN0IHVwcGVyID1cbiAgICB0cy5zZXRIb3VycyhMQVNUX0hPVVJfT0ZfMjRfSE9VUiwgTEFTVF9NSU5VVEVfT0ZfSE9VUiwgMCwgMCkgL1xuICAgIE1JTExJU0VDX1RPX1NFQztcbiAgcmV0dXJuIHtcbiAgICBsb3dlcixcbiAgICB1cHBlclxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICByZXR1cm4gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q3VycmVudFRpbWUgPSAoKSA9PlxuICBNYXRoLnJvdW5kKCtuZXcgRGF0ZSgpIC8gTUlMTElTRUNfVE9fU0VDKTtcblxuZXhwb3J0IGNvbnN0IGdldE5vdyA9ICgpID0+IChkaXNwYXRjaCwgZ2V0U3RhdGUpID0+IHtcbiAgY29uc3QgeyB0aW1lclN0YXRlIH0gPSBnZXRTdGF0ZSgpO1xuICByZXR1cm4gdGltZXJTdGF0ZT8ubm93VXRjID09IG51bGwgPyBkZWZhdWx0Q3VycmVudFRpbWUoKSA6IHRpbWVyU3RhdGU/Lm5vd1V0Yztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VOb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICByZXR1cm4gZGlzcGF0Y2goZ2V0Tm93KCkpO1xufTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lX19fUm9pbVJcIjtcbnZhciBfMiA9IFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyX19fb29JMFZcIjtcbnZhciBfMyA9IFwiY2FsZW5kYXJEaXNwbGF5X19faW1famhcIjtcbnZhciBfNCA9IFwiY29udGFpbmVyX19fTjNZNFhcIjtcbnZhciBfNSA9IFwiZGF0ZVBpY2tlckNvbnRhaW5lcl9fX0pXMmxPXCI7XG52YXIgXzYgPSBcImRhdGVwaWNrZXJDbG9zZV9fX1Y5Z0hDXCI7XG52YXIgXzcgPSBcImZpbHRlckNvbnRhaW5lcl9fX3JHcFlWXCI7XG52YXIgXzggPSBcImZpbHRlckRhdGVMYWJlbF9fX2lmRDRwXCI7XG52YXIgXzkgPSBcImZpbHRlckljb25fX19sMjFLSVwiO1xudmFyIF9hID0gXCJmaWx0ZXJMYWJlbF9fX19QMHduXCI7XG52YXIgX2IgPSBcImZpbHRlckxpc3RDb250YWluZXJfX19WbWRHcVwiO1xudmFyIF9jID0gXCJmaWx0ZXJOdW1BY3RpdmVfX19WdUhDSlwiO1xudmFyIF9kID0gXCJmaWx0ZXJTb3J0Q29udGFpbmVyX19fYXJCdlFcIjtcbnZhciBfZSA9IFwibGFiZWxfX195TkZ5alwiO1xudmFyIF9mID0gXCJzaG93RGF0ZVBpY2tlcl9fX1VwUWJwXCI7XG52YXIgXzEwID0gXCJzb3J0Q29udGFpbmVyX19fbFJzalVcIjtcbnZhciBfMTEgPSBcInNvcnRJY29uX19fZlZWNUtcIjtcbnZhciBfMTIgPSBcInNvcnRMYWJlbF9fX1VxTFRDXCI7XG52YXIgXzEzID0gXCJzb3J0TGlzdENvbnRhaW5lcl9fX2NtbkJEXCI7XG5leHBvcnQgeyBfMSBhcyBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVcIiwgXzIgYXMgXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJcIiwgXzMgYXMgXCJjYWxlbmRhckRpc3BsYXlcIiwgXzQgYXMgXCJjb250YWluZXJcIiwgXzUgYXMgXCJkYXRlUGlja2VyQ29udGFpbmVyXCIsIF82IGFzIFwiZGF0ZXBpY2tlckNsb3NlXCIsIF83IGFzIFwiZmlsdGVyQ29udGFpbmVyXCIsIF84IGFzIFwiZmlsdGVyRGF0ZUxhYmVsXCIsIF85IGFzIFwiZmlsdGVySWNvblwiLCBfYSBhcyBcImZpbHRlckxhYmVsXCIsIF9iIGFzIFwiZmlsdGVyTGlzdENvbnRhaW5lclwiLCBfYyBhcyBcImZpbHRlck51bUFjdGl2ZVwiLCBfZCBhcyBcImZpbHRlclNvcnRDb250YWluZXJcIiwgX2UgYXMgXCJsYWJlbFwiLCBfZiBhcyBcInNob3dEYXRlUGlja2VyXCIsIF8xMCBhcyBcInNvcnRDb250YWluZXJcIiwgXzExIGFzIFwic29ydEljb25cIiwgXzEyIGFzIFwic29ydExhYmVsXCIsIF8xMyBhcyBcInNvcnRMaXN0Q29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm9yZGVyRGV0YWlsc01tb3VudF9fX3Iza1JBXCI7XG52YXIgXzIgPSBcIm9yZGVyRGV0YWlsc1RpY2tldHNfX19tNElqS1wiO1xudmFyIF8zID0gXCJvcmRlck9yZGVyTnVtYmVyX19fUnFDYkNcIjtcbnZhciBfNCA9IFwib3JkZXJTdW1tYXJ5QnV0dG9uX19fdXhqaHRcIjtcbnZhciBfNSA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb19fX19SQlhFXCI7XG52YXIgXzYgPSBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZE51bWJlcl9fX3BxeV9JXCI7XG52YXIgXzcgPSBcIm9yZGVyU3VtbWFyeVRhYmxlX19fWURueFZcIjtcbnZhciBfOCA9IFwib3JkZXJTdW1tYXJ5V3JhcHBlcl9fX1J3SUVSXCI7XG5leHBvcnQgeyBfMSBhcyBcIm9yZGVyRGV0YWlsc01tb3VudFwiLCBfMiBhcyBcIm9yZGVyRGV0YWlsc1RpY2tldHNcIiwgXzMgYXMgXCJvcmRlck9yZGVyTnVtYmVyXCIsIF80IGFzIFwib3JkZXJTdW1tYXJ5QnV0dG9uXCIsIF81IGFzIFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb1wiLCBfNiBhcyBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZE51bWJlclwiLCBfNyBhcyBcIm9yZGVyU3VtbWFyeVRhYmxlXCIsIF84IGFzIFwib3JkZXJTdW1tYXJ5V3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25UaWNrZXRCdXR0b25fX196ekxzY1wiO1xudmFyIF8yID0gXCJibGFja0J1dHRvbl9fX2w5aGo5XCI7XG52YXIgXzMgPSBcImNvcHlJY29uX19fTmtIR09cIjtcbnZhciBfNCA9IFwiZGV0YWlsc1JlcXVpcmVkTGFiZWxfX19ZMmtvclwiO1xudmFyIF81ID0gXCJkaXNwbGF5X25vbmVfX19DcXBMM1wiO1xudmFyIF82ID0gXCJsYWJlbF9fX3pYRFd6XCI7XG52YXIgXzcgPSBcIm9yZGVyVGlja2V0Q29udGFpbmVyX19fWkpMemtcIjtcbnZhciBfOCA9IFwib3JkZXJUaWNrZXRJbmZvX19fZ2VtcUJcIjtcbnZhciBfOSA9IFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyX19fX3A2NlZcIjtcbnZhciBfYSA9IFwib3JkZXJUaWNrZXROb0NvbnRhaW5lcl9fX3Zxb2hOXCI7XG52YXIgX2IgPSBcIm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkX19fSFhtZHdcIjtcbnZhciBfYyA9IFwib3JkZXJXcmFwcGVyX19feURCQW9cIjtcbnZhciBfZCA9IFwicmVhc3NpZ25CdXR0b25fX19Sb2pNNVwiO1xudmFyIF9lID0gXCJ0YWJCdXR0b25zX19feFR5SkFcIjtcbnZhciBfZiA9IFwidGlja2V0QWN0aW9uQnV0dG9uc19fX3JwU01RXCI7XG52YXIgXzEwID0gXCJ0aWNrZXRMaXN0Q29udGFpbmVyX19fY2ZtcnJcIjtcbnZhciBfMTEgPSBcInRpY2tldE5vX19fYTJpTTlcIjtcbnZhciBfMTIgPSBcInRpY2tldE93bmVyRW1haWxfX19adDRPRVwiO1xudmFyIF8xMyA9IFwidGlja2V0VGlja2V0VHlwZV9fX1pxX2YwXCI7XG52YXIgXzE0ID0gXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uX19fSEY2SW1cIjtcbnZhciBfMTUgPSBcInZpZXdNb3JlQnV0dG9uX19fS18xelRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXNzaWduVGlja2V0QnV0dG9uXCIsIF8yIGFzIFwiYmxhY2tCdXR0b25cIiwgXzMgYXMgXCJjb3B5SWNvblwiLCBfNCBhcyBcImRldGFpbHNSZXF1aXJlZExhYmVsXCIsIF81IGFzIFwiZGlzcGxheV9ub25lXCIsIF82IGFzIFwibGFiZWxcIiwgXzcgYXMgXCJvcmRlclRpY2tldENvbnRhaW5lclwiLCBfOCBhcyBcIm9yZGVyVGlja2V0SW5mb1wiLCBfOSBhcyBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lclwiLCBfYSBhcyBcIm9yZGVyVGlja2V0Tm9Db250YWluZXJcIiwgX2IgYXMgXCJvcmRlclRpY2tldE51bWJlclRydW5jYXRlZFwiLCBfYyBhcyBcIm9yZGVyV3JhcHBlclwiLCBfZCBhcyBcInJlYXNzaWduQnV0dG9uXCIsIF9lIGFzIFwidGFiQnV0dG9uc1wiLCBfZiBhcyBcInRpY2tldEFjdGlvbkJ1dHRvbnNcIiwgXzEwIGFzIFwidGlja2V0TGlzdENvbnRhaW5lclwiLCBfMTEgYXMgXCJ0aWNrZXROb1wiLCBfMTIgYXMgXCJ0aWNrZXRPd25lckVtYWlsXCIsIF8xMyBhcyBcInRpY2tldFRpY2tldFR5cGVcIiwgXzE0IGFzIFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvblwiLCBfMTUgYXMgXCJ2aWV3TW9yZUJ1dHRvblwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJidXR0b25DYW5jZWxsZWRfX19FcmxEWlwiO1xudmFyIF8yID0gXCJidXR0b25Db21wbGV0ZV9fX2xsV2taXCI7XG52YXIgXzMgPSBcImJ1dHRvbkluY29tcGxldGVfX19Ub2xIZ1wiO1xudmFyIF80ID0gXCJidXR0b25QaWxsX19fenEydGNcIjtcbnZhciBfNSA9IFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkX19fcFd0MzBcIjtcbnZhciBfNiA9IFwiYnV0dG9uVW5hc3NpZ25lZF9fX1lEZDhYXCI7XG52YXIgXzcgPSBcInRpY2tldFN0YXR1c0NvbnRhaW5lcl9fX3FqNmZiXCI7XG5leHBvcnQgeyBfMSBhcyBcImJ1dHRvbkNhbmNlbGxlZFwiLCBfMiBhcyBcImJ1dHRvbkNvbXBsZXRlXCIsIF8zIGFzIFwiYnV0dG9uSW5jb21wbGV0ZVwiLCBfNCBhcyBcImJ1dHRvblBpbGxcIiwgXzUgYXMgXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRcIiwgXzYgYXMgXCJidXR0b25VbmFzc2lnbmVkXCIsIF83IGFzIFwidGlja2V0U3RhdHVzQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm5vT3JkZXJzRm91bmRfX19Bb2cycFwiO1xudmFyIF8yID0gXCJzdW1taXRUaXRsZURhdGVfX19aMTlQbVwiO1xudmFyIF8zID0gXCJ3aWRnZXRIZWFkZXJfX195WTVnZVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJub09yZGVyc0ZvdW5kXCIsIF8yIGFzIFwic3VtbWl0VGl0bGVEYXRlXCIsIF8zIGFzIFwid2lkZ2V0SGVhZGVyXCIgfVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImRheWpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1vbWVudC10aW1lem9uZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlSW5pdFN0b3JlIH0gZnJvbSBcIi4vc3RvcmVcIjtcbmltcG9ydCBNeU9yZGVyc1RpY2tldHMgZnJvbSBcIi4vY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHNcIjtcbmltcG9ydCB7IFJFU0VUX1NUQVRFLCBzZXRTdW1taXQsIHNldFVzZXIgfSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5cbmZ1bmN0aW9uIE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0KHByb3BzKSB7XG4gIGNvbnN0IHsgbG9naW5VcmwsIHN1cHBvcnRFbWFpbCwgc3VtbWl0LCBhcGlCYXNlVXJsLCB1c2VyLCBjbGllbnRJZCB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWRcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQmVmb3JlTGlmdCA9ICgpID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIGNvbnN0IGZsdXNoID0gcGFyYW1zLmhhcyhcImZsdXNoU3RhdGVcIik7XG4gICAgaWYgKGZsdXNoKSBzdG9yZS5kaXNwYXRjaCh7IHR5cGU6IFJFU0VUX1NUQVRFLCBwYXlsb2FkOiBudWxsIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc3RvcmUuZGlzcGF0Y2goc2V0U3VtbWl0KHN1bW1pdCkpO1xuICB9LCBbc3VtbWl0XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRVc2VyKHVzZXIpKTtcbiAgfSwgW3VzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxCb3ggc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX0+XG4gICAgICAgICAgPGgzPnt0KFwib3JkZXJzLnRpdGxlXCIpfTwvaDM+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8TXlPcmRlcnNUaWNrZXRzXG4gICAgICAgICAgbG9naW5Vcmw9e2xvZ2luVXJsfVxuICAgICAgICAgIHN1cHBvcnRFbWFpbD17c3VwcG9ydEVtYWlsfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIGFwaUJhc2VVcmw9e2FwaUJhc2VVcmx9XG4gICAgICAgIC8+XG4gICAgICA8L1BlcnNpc3RHYXRlPlxuICAgIDwvUHJvdmlkZXI+XG4gICk7XG59XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc015VGlja2V0c1dpZGdldDtcbiJdLCJuYW1lcyI6WyJnZXRBY2Nlc3NUb2tlbiIsImF1dGhFcnJvckhhbmRsZXIiLCJnZXRSZXF1ZXN0IiwiZGVsZXRlUmVxdWVzdCIsImNyZWF0ZUFjdGlvbiIsInN0b3BMb2FkaW5nIiwic3RhcnRMb2FkaW5nIiwicHV0UmVxdWVzdCIsIkZJUlNUX1BBR0UiLCJERUZBVUxUX0lURU1TX1BFUl9QQUdFIiwiT05FX1BBR0VfTkVYVCIsIlJFU0VUX1NUQVRFIiwiUkVTRVRfRklMVEVSIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9USUNLRVRTIiwiQVNTSUdOX1RJQ0tFVCIsIlJFTU9WRV9USUNLRVRfQVRURU5ERUUiLCJSRUZVTkRfVElDS0VUIiwiUkVTRU5EX05PVElGSUNBVElPTiIsIkdFVF9USUNLRVRTX0JZX09SREVSIiwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IiLCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMiLCJHRVRfVElDS0VUX0RFVEFJTFMiLCJUSUNLRVRfQVRURU5ERUVfS0VZUyIsImVtYWlsIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55IiwiZGlzY2xhaW1lckFjY2VwdGVkIiwiZXh0cmFRdWVzdGlvbnMiLCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiVVBEQVRFX0lEUF9QUk9GSUxFIiwiU0VUX1VTRVIiLCJTRVRfU1VNTUlUIiwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TIiwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MiLCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MiLCJyZXNldFN0YXRlIiwiZGlzcGF0Y2giLCJyZXNldEZpbHRlciIsIkZJTFRFUl9WQVJfREFURSIsIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIiwicGFyc2VGaWx0ZXIiLCJmaWx0ZXJPYmoiLCJmaWx0ZXIiLCJ0eXBlIiwicHVzaCIsIm5hbWUiLCJsb3dlciIsInVwcGVyIiwidmFsdWUiLCJnZXRTb3J0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIiwiZ2V0VXNlck9yZGVycyIsIl9yZWYiLCJwYWdlIiwicGVyUGFnZSIsInNvcnQiLCJuZXh0IiwiZ2V0U3RhdGUiLCJfcmVmMiIsImFwaUJhc2VVcmwiLCJ3aWRnZXRTdGF0ZSIsInN1bW1pdCIsImFjY2Vzc1Rva2VuIiwiUHJvbWlzZSIsInJlamVjdCIsInBhcmFtcyIsImFjY2Vzc190b2tlbiIsIm9yZGVyIiwicmVsYXRpb25zIiwicGVyX3BhZ2UiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiZmlsdGVycyIsImlkIiwidGhlbiIsInBheWxvYWQiLCJjYXRjaCIsImUiLCJzZXRBY3RpdmVPcmRlcklkIiwib3JkZXJJZCIsInNldFVzZXIiLCJ1c2VyIiwidXBkYXRlUHJvZmlsZSIsInByb2ZpbGUiLCJfcmVmMyIsImlkcEJhc2VVcmwiLCJnZXRVc2VyVGlja2V0cyIsIl9yZWY0IiwiX3JlZjUiLCJ1c2VyU3RhdGUiLCJ1c2VyUHJvZmlsZSIsImV4cGFuZCIsImZpZWxkcyIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjYiLCJfcmVmNyIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY4IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjkiLCJfcmVmMTAiLCJvcmRlclN0YXRlIiwiY3VycmVudF9wYWdlIiwib3JkZXJQYWdlIiwidGlja2V0U3RhdGUiLCJ0aWNrZXRQYWdlIiwic2V0U3VtbWl0IiwiUmVhY3QiLCJ1c2VTdGF0ZSIsIlByb3BUeXBlcyIsIlN0YWNrIiwidXNlVHJhbnNsYXRpb24iLCJkYXlqcyIsIkFkYXB0ZXJEYXlqcyIsIkxvY2FsaXphdGlvblByb3ZpZGVyIiwiRGF0ZVBpY2tlciIsIkNsb3NlSWNvbiIsImdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyIsInN0eWxlcyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIkJhc2ljRGF0ZVBpY2tlciIsIm9uRmlsdGVyIiwib25SZXNldCIsInQiLCJub3ciLCJkYXRlVmFsdWUiLCJzZXREYXRlVmFsdWUiLCJvbkRhdGVDaGFuZ2UiLCJ2YWwiLCJkYXRlIiwiRGF0ZSIsIiRkIiwib25SZXNldEFjdGlvbiIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiZmlsdGVyRGF0ZUxhYmVsIiwiYWxpZ25JdGVtcyIsInN4IiwicHQiLCJwYiIsImRhdGVQaWNrZXJDb250YWluZXIiLCJmb250U2l6ZSIsImRhdGVwaWNrZXJDbG9zZSIsIm9uQ2xpY2siLCJkYXRlQWRhcHRlciIsImNhbGVuZGFyRGlzcGxheSIsIm9uQ2hhbmdlIiwicHJvcFR5cGVzIiwiZnVuYyIsInVzZVJlZiIsInVzZUVmZmVjdCIsIkZpbHRlckxpc3RJY29uIiwiQm94IiwiRmlsdGVyIiwic2hvd0ZpbHRlckxpc3QiLCJzZXRTaG93RmlsdGVyTGlzdCIsInNob3dEYXRlcGlja2VyIiwic2V0U2hvd0RhdGVwaWNrZXIiLCJmaWx0ZXJOdW1BY3RpdmUiLCJzZXRGaWx0ZXJOdW1BY3RpdmUiLCJmaWx0ZXJSZWYiLCJoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUiLCJldmVudCIsImN1cnJlbnQiLCJjb250YWlucyIsInRhcmdldCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ0b2dnbGUiLCJmaWx0ZXJDb250YWluZXIiLCJyZWYiLCJmaWx0ZXJJY29uIiwiZmlsdGVyTGFiZWwiLCJmaWx0ZXJMaXN0Q29udGFpbmVyIiwiY29udGFpbmVyIiwic2hvd0RhdGVQaWNrZXIiLCJzdHlsZWQiLCJTZWFyY2hJY29uIiwiSW5wdXRCYXNlIiwiU2VhcmNoQ29udGFpbmVyIiwicG9zaXRpb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJ3aWR0aCIsImRpc3BsYXkiLCJTZWFyY2hJY29uV3JhcHBlciIsImhlaWdodCIsImp1c3RpZnlDb250ZW50IiwiU3R5bGVkSW5wdXRCYXNlIiwiY29sb3IiLCJib3JkZXJCb3R0b20iLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsIkNsb3NlSWNvbldyYXBwZXIiLCJwYWRkaW5nIiwidG9wIiwicmlnaHQiLCJjdXJzb3IiLCJ6SW5kZXgiLCJTZWFyY2giLCJvblNlYXJjaCIsInNob3dDbG9zZSIsInNldFNob3dDbG9zZSIsInNlYXJjaFZhbHVlIiwic2V0U2VhcmNoVmFsdWUiLCJvbktleURvd24iLCJrZXkiLCJuYXRpdmVFdmVudCIsInJlc2V0U2VhcmNoIiwicGxhY2Vob2xkZXIiLCJpbnB1dFByb3BzIiwiQnV0dG9uIiwiSW1wb3J0RXhwb3J0SWNvbiIsIlNvcnQiLCJvblNvcnQiLCJzaG93U29ydCIsInNldFNob3dTb3J0Iiwic29ydFJlZiIsImhhbmRsZVNvcnRDbGlja091dHNpZGUiLCJzb3J0Q29udGFpbmVyIiwic29ydEljb24iLCJzb3J0TGFiZWwiLCJzb3J0TGlzdENvbnRhaW5lciIsImxhYmVsIiwiR3JpZCIsIkZpbHRlclNvcnRTZWFyY2giLCJqdXN0aWZ5IiwiaXRlbSIsInhzIiwiZ2FwIiwiZmlsdGVyU29ydENvbnRhaW5lciIsInVzZURpc3BhdGNoIiwidXNlU2VsZWN0b3IiLCJzaGFsbG93RXF1YWwiLCJJbmZpbml0ZVNjcm9sbCIsIk9yZGVyc0xpc3QiLCJnZXRTdW1taXRGb3JtYXR0ZWREYXRlIiwiTXlPcmRlcnNUaWNrZXRzIiwibWVtYmVyT3JkZXJzIiwib3JkZXJzX2N1cnJlbnRfcGFnZSIsIm9yZGVyc19wZXJfcGFnZSIsIm9yZGVyc190b3RhbCIsInN0YXRlIiwiaGFzTW9yZSIsInNldEhhc01vcmUiLCJzZWFyY2hOZXh0Iiwic2V0U2VhcmNoTmV4dCIsInNldEZpbHRlciIsInNldFNvcnQiLCJmZXRjaERhdGEiLCJyZXMiLCJyZXNwb25zZSIsImRhdGEiLCJ3aWRnZXRIZWFkZXIiLCJtZCIsImxnIiwic3VtbWl0VGl0bGVEYXRlIiwiZGF0YUxlbmd0aCIsInNjcm9sbFRocmVzaG9sZCIsIm1hcCIsIm5vT3JkZXJzRm91bmQiLCJEaXZpZGVyIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJmb3JtYXRDdXJyZW5jeSIsIk9yZGVyU3VtbWFyeVRhYmxlIiwidGlja2V0cyIsImRpc2NvdW50VG90YWwiLCJyZWZ1bmRUb3RhbCIsInRheGVzVG90YWwiLCJhbW91bnRUb3RhbCIsInRpY2tldFN1bW1hcnkiLCJodW5kcmVkIiwib3JkZXJTdW1tYXJ5VGFibGUiLCJ0aWNrZXRUb3RhbCIsInF0eSIsInRpY2tldF90eXBlIiwiY29zdCIsImFsaWduIiwiY3VycmVuY3kiLCJjcmVhdGVkIiwiZGlzY291bnRfYW1vdW50IiwidGF4ZXNfYW1vdW50Iiwic3RhdHVzIiwic2hhcGUiLCJzdHJpbmciLCJudW1iZXIiLCJvYmplY3QiLCJhcnJheU9mIiwiUmVmdW5kRW1haWxTdXBwb3J0Iiwib25SZWZ1bmRDbGljayIsIm9uUmVmdW5kRGV0YWlsQ2xpY2siLCJvbkVtYWlsU3VwcG9ydENsaWNrIiwib3JkZXJTdW1tYXJ5QnV0dG9uIiwidmFyaWFudCIsInNpemUiLCJPcmRlclN1bW1hcnkiLCJvcmRlclN1bW1hcnlXcmFwcGVyIiwicHgiLCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvIiwiT3JkZXJMaXN0VGlja2V0cyIsIlBBR0lOQVRJT05fRElTUExBWV9DT1VOVCIsIk9yZGVyTGlzdEl0ZW0iLCJ0b3RhbCIsIm9uUGFnaW5hdGVDbGljayIsIml0ZW1zVG9EaXNwbGF5Iiwic2V0SXRlbXNUb0Rpc3BsYXkiLCJzbGljZWRUaWNrZXRzIiwic2xpY2UiLCJvblZpZXdNb3JlIiwib25WaWV3TGVzcyIsInZpZXdNb3JlQnV0dG9uIiwiVGlja2V0U3RhdHVzIiwiT3JkZXJOdW1iZXIiLCJnZXRTdW1taXRSZWFzc2lnbkRhdGUiLCJ1c2VOb3ciLCJnZXRBY3RpdmVCdXR0b25BY3Rpb25zIiwib3duZXIiLCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uIiwic2hvd1JlYXNzaWduQnV0dG9uIiwicmVhc3NpZ25EYXRlIiwiaXNSZWFzc2lnbmFibGUiLCJyZWFzc2lnbkJ1dHRvbiIsIm9yZGVyV3JhcHBlciIsInRpY2tldFRpY2tldFR5cGUiLCJ0aWNrZXRPd25lckVtYWlsIiwiaXNfYWN0aXZlIiwidGlja2V0Tm8iLCJjb3B5IiwidHJ1bmNhdGVkIiwidGlja2V0QWN0aW9uQnV0dG9ucyIsImFzc2lnblRpY2tldEJ1dHRvbiIsInRvdGFsX3JlZnVuZGVkX2Ftb3VudCIsIkNvbnRlbnRDb3B5SWNvbiIsIm9yZGVyVGlja2V0Tm9Db250YWluZXIiLCJvcmRlclRpY2tldE51bWJlclRydW5jYXRlZCIsImNvcHlJY29uIiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0IiwiYm9vbCIsIlRhYnMiLCJUYWIiLCJFcnJvckljb24iLCJUYWJQYW5lbCIsInByb3BzIiwiaW5kZXgiLCJyb2xlIiwiaGlkZGVuIiwiT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUiLCJpc01vYmlsZSIsImRldGFpbHNSZXF1aXJlZCIsInNldFZhbHVlIiwiaGFuZGxlQ2hhbmdlIiwiXyIsIm5ld1ZhbHVlIiwibW9yZURldGFpbHMiLCJkZXRhaWxzUmVxdWlyZWRMYWJlbCIsInRpY2tldExpc3RDb250YWluZXIiLCJib3JkZXJDb2xvciIsInRleHRDb2xvciIsIlRhYkluZGljYXRvclByb3BzIiwic3R5bGUiLCJiYWNrZ3JvdW5kIiwidGFiQnV0dG9ucyIsInVzZVRoZW1lIiwidXNlTWVkaWFRdWVyeSIsImdldE9yZGVyVGlja2V0cyIsImdldEZvcm1hdHRlZERhdGUiLCJsYXN0X3BhZ2UiLCJ0aGVtZSIsImJyZWFrcG9pbnRzIiwiZG93biIsImlzTW9iaWxlVmlld2FibGUiLCJzZXRNb2JpbGVWaWV3YWJsZSIsIm1lbWJlclRpY2tldHMiLCJmaW5kIiwiZmV0Y2hUaWNrZXRzQnlPcmRlciIsImNvbnNvbGUiLCJsb2ciLCJ0aWNrZXRzX3BhZ2VfY3VycmVudCIsIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lciIsIm9yZGVyVGlja2V0SW5mbyIsImJsYWNrQnV0dG9uIiwicm93U3BhY2luZyIsImNvbHVtblNwYWNpbmciLCJzbSIsIm9yZGVyVGlja2V0Q29udGFpbmVyIiwiZGlzcGxheV9ub25lIiwiZmxleERpcmVjdGlvbiIsInRpY2tldHNfdG90YWwiLCJDb250YWluZXIiLCJpc0FjdGl2ZSIsInJlZnVuZF9yZXF1ZXN0cyIsInIiLCJ0aWNrZXRfc3RhdHVzX2luY29tcGxldGUiLCJ0aWNrZXRfdW5hc3NpZ25lZCIsIm93bmVyX2lkIiwidGlja2V0X2NvbXBsZXRlIiwidGlja2V0U3RhdHVzQ29udGFpbmVyIiwiYnV0dG9uUGlsbCIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJMT0dPVVRfVVNFUiIsIkRFRkFVTFRfU1RBVEUiLCJ3aWRnZXRMb2FkaW5nIiwiZXJyb3JzIiwibG9hZGluZyIsImlzT3JkZXJMb2FkaW5nIiwib3JkZXJzX2xhc3RfcGFnZSIsInRpY2tldF9jdXJyZW50X3BhZ2UiLCJ0aWNrZXRfbGFzdF9wYWdlIiwidGlja2V0X3Blcl9wYWdlIiwidGlja2V0X3RvdGFsIiwiV2lkZ2V0UmVkdWNlciIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImZvcm1lck9yZGVyIiwibyIsInVwZGF0ZWRPcmRlciIsInRpY2tldHNfcGFnZV9sYXN0IiwibW8iLCJ1c2VNZW1vIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsIkxBU1RfSE9VUl9PRl8yNF9IT1VSIiwiTEFTVF9NSU5VVEVfT0ZfSE9VUiIsIk1JTExJU0VDX1RPX1NFQyIsIk9ORV9EQVkiLCJtb21lbnQiLCJsb2NhbGUiLCJvcHRpb25zIiwiZGVmYXVsdE9wdGlvbnMiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJmb3JtYXR0ZXIiLCJJbnRsIiwiTnVtYmVyRm9ybWF0IiwiZm9ybWF0IiwiZGF0ZXRpbWUiLCJ0aW1lWm9uZSIsInR6IiwidW5peCIsInN0YXJ0RGF5Iiwic3RhcnRfZGF0ZSIsInRpbWVfem9uZV9pZCIsImVuZERheSIsImVuZF9kYXRlIiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsInJlZnVuZGVkX2Ftb3VudCIsImFtb3VudCIsInRpY2tldF90eXBlcyIsInB1cmNoYXNlVGlja2V0VG90YWwiLCJjdXJyZW5jeU9iamVjdCIsInRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSIsInRpY2tldFR5cGUiLCJ0dCIsInRpY2tldF90eXBlX2lkIiwicHVyY2hhc2VUb3RhbCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIm9yZGVycyIsInRzIiwic2V0SG91cnMiLCJyZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIiwiZGVmYXVsdEN1cnJlbnRUaW1lIiwiTWF0aCIsInJvdW5kIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsIlByb3ZpZGVyIiwiUGVyc2lzdEdhdGUiLCJNeU9yZGVyc015VGlja2V0c1dpZGdldCIsInN1cHBvcnRFbWFpbCIsImhhbmRsZUJlZm9yZUxpZnQiLCJVUkxTZWFyY2hQYXJhbXMiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInNlYXJjaCIsImZsdXNoIiwiaGFzIiwib25CZWZvcmVMaWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==