my-orders-tickets-widget 1.0.0-beta.4 → 1.0.0-beta.6

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