{"version":3,"sources":["scripts/app.js"],"names":["adminTypeEditController","$log","$location","nbPosApi","$routeParams","Notification","vm","this","itemTypeId","inEditMode","undefined","btnAction","heading","processUserData","data","Code","itemType","Description","description","Sequence","parseInt","sequence","IsVisible","isVisible","ShowItemStatus","showItemStatus","ImageId","DefaultSupplierId","Suppliers","promise","updateBrand","createBrand","then","success","message","cancel","response","error","path","deleteBrand","getSuppliers","suppliers","getBrand","imageId","statusText","clickConfirmDirective","$window","link","scope","element","attr","msg","ngConfirmClick","clickAction","confirmedClick","bind","confirm","$eval","$inject","config","$httpProvider","NotificationProvider","interceptors","push","setOptions","startTop","startRight","angular","module","searchuserresultsController","$rootScope","isLoading","query","search","selectUser","user","log","$broadcast","email","Email","userid","Id","findUsers","e","p","f","l","c","o","searchResults","controller","searchuserController","searchUser","phone","firstName","lastName","company","noLoginOnly","adminUsersController","showResults","selectedRow","storedSearchParams","localStorage","getItem","params","fromJson","Query","activeOnly","gridOptions","multiSelect","enableFullRowSelection","selectedItems","enableRowHeaderSelection","onRegisterApi","gridApi","selection","on","rowSelectionChanged","row","id","entity","columnDefs","name","displayName","width","goToCreateForm","getUsers","setItem","toJson","adminUserEditController","userId","isUserNoLogin","UserId","FirstName","LastName","Company","Title","Address1","address","Address2","City","city","StateCode","State","PostalCode","zip","Phone","CountryId","countryId","AddressTypeId","addressType","Active","active","AppSettings","appSettings","KeyName","KeyValueC","KeyValueI","KeyValueD","ProductAuthorizations","userAuthorizedBrands","ProductId","Authorized","updateUser","createUser","getUserById","NoLogin","Addresses","length","country","CountryName","Country","getBrands","availableBrands","nbProducts","isBrandAuthorized","prodId","x","hideCheckBoxes","loadProductTypes","loadAddressTypes","getAddressTypes","AddressType","loadCountries","Countries","loadUSAState","States","adminTypesController","cellTemplate","directive","TagsEditController","tagId","getTagById","tag","Name","updateTag","TagsController","removeTemplate","idLinkTemplate","getTags","addTag","createTag","removeRow","deleteTag","index","indexOf","splice","suppliersEditController","supplierId","processData","EmailSubject","EmailTo","EmailCc","EmailBcc","updateSupplier","createSupplier","loadSupplierData","supplierProm","getSupplierById","SuppliersController","shippersEditController","shipperId","TrackingLink","updateShipper","createShipper","loadShipperData","getShipperById","shippersController","getShippers","reportUsersController","allowExport","enableGridMenu","enableSelectAll","exporterCsvFilename","exporterCsvLinkElement","document","querySelectorAll","enablePagination","enablePaginationControls","paginationPageSizes","paginationPageSize","getUserReport","reportPOSController","$filter","$scope","$document","FileSaver","prepareReportData","itemsReturned","arrayData","pop","coldefs","buildColumnDefinitions","reportData","reportDataAvg","WeekEnding","columnNames","Object","getOwnPropertyNames","forEach","columnName","runningTotal","reportRow","toFixed","showDownload","showGrid","showMessage","reportError","columnDefinitions","property","hasOwnProperty","startsWith","brandDescQuant","brandDescLabels","colDef","field","format","today","Date","twoWeeksAgo","setDate","getDate","startDate","endDate","DateRange","start","end","exporterMenuPdf","brands","brandDescription","value","selectedBrandLabels","selectedBrandQuantities","$watch","nowSelected","selectedBrandsForLabels","val","toString","selectedBrandsForQuantities","getCleanBrandDescription","brandCode","replace","buildReport","getPOSReport","generateReport","reportHtml","getElementById","innerHTML","Filename","Report","Engine","Landscape","GeneratePdf","saveAs","reportOrdersController","SubType","getOrders","getOrderDetailsReport","reportOrderHeaderController","getOrderHeaderReport","itemsByWeekTypeDetailController","isBrandPicked","getProductsByBrand","selectedBrand","getProductsByProgram","selectedProgram","products","allProducts","filteredArray","filter","obj","brandId","getItemsByBrand","Items","programs","SubTypes","getItems","getItemByWeekTypeDetailReport","shippedItemsOnly","itemsByWeekTypeController","getItemByWeekDetailReport","itemsByStateTypeController","getItemByStateDetailReport","adminItemsController","endpointUrl","Url","isDataBound","selected","saveItemOrder","indexModifier","console","i","SaveItemOrder","isGridDataBound","isProgramDataBound","getItemsByProgram","adminItemPermissionsController","isBrandChosen","isGroupChosen","addedItemsForUpdate","enableCellEdit","itemTypes","getUserGroups","groups","updateItemPermissions","UpdateGroupItemPermissions","clearUnsavedChanges","group","addValueForRecordUpdate","itemIndex","findIndex","r","mappedItem","mapPropertiesForUpdate","items","ItemId","GroupId","AllowView","AllowOrder","GetItemsByGroupdAndProgram","setGroupValue","adminItemsEditController","nbPosUtil","$q","Groups","isAddingGroup","itemId","NewImage","tabToggle","gridEdited","uploadImageChanged","OverridePerm","enableRowHashing","removeGroup","ItemTypeId","ItemNumber","PackageCount","SortOrder","Level","IsLabel","Language","LabelType","Status","SupplierId","NewAsOf","CreatedOn","GetItemPermissions","item","submit","Notes","Binary","updateItem","createItem","isExistingPermission","existingPerms","newPerm","exists","perm","UpdateItemPermissions","promises","deletePerms","updatePerms","addPerms","DeleteItemPermission","UpdateItemPermission","AddItemPermission","all","AddGroup","ItemDescription","selectedGroup","GroupName","getImageBinary","fileInputElement","bytes","fileInput","files","reader","FileReader","onloadend","Uint8Array","target","result","JSONtoBase64","addImageSrc","readAsArrayBuffer","file","itemImage","src","readAsDataURL","SavePerms","close","responses","setActive","toggleGroupAdd","adminGroupsEditController","groupId","res","getGroupById","updateGroup","createGroup","adminGroupsController","getGroups","$sce","trustAsHtml","reportExport","ReportExportController","formats","label","restrict","templateUrl","controllerAs","bindToController","acmeNavbar","NavbarController","cartCount","currentUser","appConfig","Auth","targetUser","showBreadcrumb","$on","event","args","counter","cancelImpersonation","ImpersonatedId","ImpersonatedEmail","IsImpersonated","goBack","history","back","logout","logOut","isAuthenticated","getCart","Cart","productsController","currentItem","isAdmin","IsAdministrator","getItemByBrands","showNotAuthorizedMessage","ButtonText","debug","getItemsByBrandAndUser","loadProgramsAndProducts","cartUpdate","isInCart","notifyError","reversed","addProductToCart","addItemToCart","quantity","compareParameter","type","a","b","sortBrandsBy","choice","sort","ReverseOrder","reverse","isIteminCart","itemsInCart","cartItem","Item","getBrandsByUserId","cartController","isError","deleteItem","deleteCartItem","updateQuantities","clearCart","prod","Quantity","brandController","loadBrands","compareStrings","showError","shippingController","isImpersonated","targetEmail","dist","FieldReps","submitOrder","selectedAddress","createAddress","updateAddress","addressId","sendOrder","orderHeader","FieldRepId","FieldRep","Supplier","Distributor","OtherDistributor","CustomerComment","InternalComment","SubmitCartFor","submitCart","preloadAddress","getAddressesByUser","getAddresses","addresses","Label","compareIds","loadFieldReps","ShipOrderController","$route","orderId","hasPendingItems","isTrackingEdit","doSentItemsExist","gridOptionsShipped","rowHeight","$gridship","showEditForm","enableRowSelection","$grid","submitShipment","getSelectedRows","alert","processOrderItems","updateOrderStatus","updateTrackingInfo","editTrackingInfo","backToOrderDatails","url","grid","isSelected","ShipOrderItem","selectedShipper","TrackingNumber","notifyOrderShipped","errorOrder","pendingItems","statusIndex","UpdateOrderStatus","reload","UpdateOrderItemShipment","selectedShipperShipped","TrackingNumberShipped","notifyTrackingInfoUpdated","loadShippers","Shippers","loadOrderDetails","getOrderDetails","order","setGridData","sentItems","trackingLinkTmpt","orderItem","orderSent","isSentItem","OrderItemId","Qty","Thumbnail","Shipper","ShipperName","Tracking","TrackingNumer","found","OrderShipments","searchOrderController","tomorrow","state","status","searchOrders","orders","filterOrders","emailLnkTemplate","shipLinkTemplate","cellFilter","isOrderValid","ord","OrderId","toUpperCase","split","Tag","DeleteOrder","filteredOrders","Submitted","CustomerName","Shp","tags","attrs","keyCode","which","$apply","dlEnterKey","preventDefault","orderhistorydetailsController","orderInfo","title","business","dateTime","shippingInfo","ProdTitle","User","Address","Zip","ShipDate","cartlist","number","count","imageUrl","orderHistory","cartList","detail","OrderdetailsController","isShippingEdit","getCountry","fullOrder","trackingLinks","getUniqueTrackingLinks","OrderTagId","YesDelete","AddItem","newItem","SourceItemId","AddItemToOrder","addItemMode","setOrderTag","t","tagName","UpdateOrderTag","removeItem","RemoveItemInOrder","shipOrder","saveComments","UpdateOrderMeta","EditItemQuantity","EditItemInOrder","updateShipping","UpdateOrderAddress","EmailOrder","sendOrderEmail","SendEmailOfOrder","resendShippingEmail","trackingNumber","resendShipEmail","SendOrderShippingEmail","resendConfirmationEmail","resendConfirmEmail","SendOrderConfirmationEmail","resendFulfillmentEmails","resendFulfillmentEmail","SendOrderFulfillmentEmails","getDateOffset","offset","getTimezoneOffset","negative","Math","abs","hour","floor","minute","output","slice","shipments","links","trackingNumbers","tN","trackingLink","shipperName","util","arrayBuffer","d","chunk","base64","encodings","byteLength","byteRemainder","mainLength","getTokenExpire","awdJwt","expires","setSeconds","getSeconds","expires_in","access_token","decrypt","encryptedValue","CryptoJS","enc","Base64","parse","Utf8","parseJwt","token","base64Url","jsonPayload","decodeURIComponent","atob","map","charCodeAt","join","JSON","extractHash","hashParseRegEx","current","exec","window","location","hash","service","authFactory","$templateCache","isTemplateRequest","method","get","request","headers","aws","token_type","Token","$http","ApiUrl","endpoints","LogEvent","Authorize","ItemType","ItemTypeByUser","ItemByType","ItemByTypeAndUser","ItemImage","ClearCart","AddItemToCart","RemoveCartItem","SubmitCart","AddressesByUser","AddressTypes","FindUsers","OrderHeaderReport","OrderDetailReport","ItemByWeekReport","ItemByWeekTypeDetailReport","ItemByStateDetailReport","SearchOrders","OrderDetails","UpdateItemSortOrder","UpdateItemsSortOrder","UpdateSortOrderTag","loadUserGroups","Tags","UserReport","POSSummary","generatePdf","OrderMovementPdf","ItemPermission","ItemPermissionByItem","ItemPermissionsBatch","ItemsByGroupdAndProgram","api","task","post","Task","init","SessionId","sessionStorage","href","put","updateImage","binaryImage","TargetUrl","itemQuantity","AddressId","OrderHeader","impersonatedId","getAddress","deferred","defer","groupToEdit","resolve","reject","noLogin","ActiveOnly","labels","quantities","Labels","Quantities","subType","shippedOnly","qty","statusArray","GetStaticOrderStatus","orderItemId","ShipperId","tracking","shipmentId","ChangeSortOrder","modifier","SortOrderChange","responseType","programId","propertyName","propertyValue","collection","len","InitController","targetWeb","clientId","AppKey","originalPathQueryString","originalPath","runBlock","cookie","idToken","NBPOS","Config","targetUrl","idTokenDecoded","isPosAuth","SID","appKey","AppSecret","appSecret","Expiration","run","routeConfig","$routeProvider","defaultWhen","when","route","extend","authorization","call","otherwise","redirectTo"],"mappings":"AA0UA,QAASA,yBAAwBC,EAAMC,EAAWC,EAAUC,EAAcC,GACtE,GAAIC,GAAKC,IACTD,GAAGE,WAAaJ,EAAaI,WAAaJ,EAAaI,WAAa,EACpEF,EAAGG,WAAaH,EAAGE,YAA+B,IAAjBF,EAAGE,YAAqCE,QAAjBJ,EAAGE,WAC3DF,EAAGK,UAAYL,EAAGG,WAAa,OAAS,SACxCH,EAAGM,QAAUN,EAAGG,WAAa,OAAS,aAEtCH,EAAGO,gBAAkB,WACjB,GAAIC,IACAC,KAAMT,EAAGU,SACTC,YAAaX,EAAGY,YAChBC,SAAUC,SAASd,EAAGe,UACtBC,UAAWhB,EAAGiB,UACdC,eAAgBlB,EAAGmB,eACnBC,QAAS,EACTC,kBAAmBrB,EAAGsB,WAE1BC,EAAUvB,EAAGG,WAAaN,EAAS2B,YAAYxB,EAAGE,WAAYM,GAAQX,EAAS4B,YAAYjB,EAC3Fe,GAAQG,KAAK,WACT3B,EAAa4B,SAAUC,QAAS,sBAChC5B,EAAG6B,UACJ,SAAUC,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,OAAQH,QAAS,wBAGtC5B,EAAG6B,OAAS,WACRjC,EAAUoC,KAAK,qBAEnBhC,EAAGiC,YAAc,WACbpC,EAASoC,YAAYjC,EAAGE,YAAYwB,KAAK,WACrC3B,EAAa4B,SAAUC,QAAS,iBAChC5B,EAAG6B,UACJ,WACC9B,EAAagC,OAAQH,QAAS,wBAGtC/B,EAASqC,eAAeR,KAAK,SAAUI,GACnC9B,EAAGmC,UAAYL,EAAStB,MACzB,SAAUsB,GACTnC,EAAKoC,MAAMD,KAGX9B,EAAGG,YACHN,EAASuC,SAASpC,EAAGE,YAAYwB,KAAK,SAAUI,GAC5C9B,EAAGU,SAAWoB,EAAStB,KAAKC,KAC5BT,EAAGY,YAAckB,EAAStB,KAAKG,YAC/BX,EAAGe,SAAWe,EAAStB,KAAKK,SAC5Bb,EAAGiB,UAAYa,EAAStB,KAAKQ,UAC7BhB,EAAGmB,eAAiBW,EAAStB,KAAKU,eAClClB,EAAGqC,QAAUP,EAAStB,KAAKY,QAC3BpB,EAAGsB,UAAYQ,EAAStB,KAAKa,mBAC9B,SAAUS,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,OAAQH,QAASE,EAASQ,eAOnD,QAASC,uBAAsBC,GAC3B,OACIC,KAAM,SAAUC,EAAOC,EAASC,GAC5B,GAAIC,GAAMD,EAAKE,gBAAkB,gBAC7BC,EAAcH,EAAKI,cACvBL,GAAQM,KAAK,QAAS,WACdT,EAAQU,QAAQL,IAChBH,EAAMS,MAAMJ,OA7YhCrD,wBAAwB0D,SAAW,OAAQ,YAAa,WAAY,eAAgB,gBACpFb,sBAAsBa,SAAW,WAFjC,WACI,YAMA,SAASC,GAAOC,EAAeC,GAC3BD,EAAcE,aAAaC,KAAK,eAChCF,EAAqBG,YACjBC,SAAU,GACVC,WAAY,KAPpBP,EAAOD,SAAW,gBAAiB,wBAFnCS,QACGC,OAAO,SAAU,kBAAmB,YAAa,UAAW,UAAW,eAAgB,kBAAmB,qBAAsB,oBAAqB,qBAAsB,aAAc,mBAAoB,mBAAoB,cAAe,aAC9OT,OAAOA,MAYhB,WACI,YAKA,SAASU,GAA4BnE,EAAWD,EAAME,EAAUmE,GAC5D,GAAIhE,GAAKC,IACTD,GAAGiE,WAAY,CACf,IAAIC,GAAQtE,EAAUuE,QACtBnE,GAAGoE,WAAa,SAAUC,GACtB1E,EAAK2E,IAAID,GACTL,EAAWO,WAAW,aAAeC,MAAOH,EAAKI,MAAOC,OAAQL,EAAKM,KACrE/E,EAAUoC,KAAK,aAEnBnC,EAAS+E,UAAUV,EAAMW,EAAIX,EAAMW,EAAI,GAAIX,EAAMY,EAAIZ,EAAMY,EAAI,GAAIZ,EAAMa,EAAIb,EAAMa,EAAI,GAAIb,EAAMc,EAAId,EAAMc,EAAI,GAAId,EAAMe,EAAIf,EAAMe,EAAI,GAAIf,EAAMgB,GAAI,GAAO,GAC3JxD,KAAK,SAAUI,GACZ9B,EAAGmF,cAAgBrD,EAAStB,KAC5BR,EAAGiE,WAAY,GAChB,SAAUnC,GACTnC,EAAKoC,MAAMD,KAfnBiC,EAA4BX,SAAW,YAAa,OAAQ,WAAY,cAHxES,QACGC,OAAO,SACPsB,WAAW,8BAA+BrB,MAoBjD,WACI,YAKA,SAASsB,GAAqB1F,EAAMC,GAChC,GAAII,GAAKC,IACTD,GAAGsF,WAAa,WACZ3F,EAAK2E,IAAItE,GACLA,EAAGwE,OACH5E,EAAUuE,OAAO,IAAKnE,EAAGwE,OAEzBxE,EAAGuF,OACH3F,EAAUuE,OAAO,IAAKnE,EAAGuF,OAEzBvF,EAAGwF,WACH5F,EAAUuE,OAAO,IAAKnE,EAAGwF,WAEzBxF,EAAGyF,UACH7F,EAAUuE,OAAO,IAAKnE,EAAGyF,UAEzBzF,EAAG0F,SACH9F,EAAUuE,OAAO,IAAKnE,EAAG0F,SAEzB1F,EAAG2F,aACH/F,EAAUuE,OAAO,KAAK,GAE1BvE,EAAUoC,KAAK,sBAtBvBqD,EAAqBjC,SAAW,OAAQ,aAJxCS,QACGC,OAAO,SACPsB,WAAW,uBAAwBC,MA8B1C,WACI,YAKA,SAASO,GAAqBjG,EAAME,EAAUD,GAC1C,GAAII,GAAKC,IACTD,GAAG6F,aAAc,EACjB7F,EAAG8F,cACH,IAAIC,GAAqBC,aAAaC,QAAQ,mBAE9C,IAAGF,EAAmB,CAClB,GAAIG,GAASrC,QAAQsC,SAASJ,EAC9B/F,GAAGoG,OACC5B,MAAO0B,EAAO,MACdX,MAAOW,EAAO,MACdV,UAAWU,EAAO,UAClBT,SAAUS,EAAO,SACjBR,QAASQ,EAAO,QAChBP,YAAaO,EAAO,YAAiBA,EAAO,YAAiB,GAC7DG,WAAYH,EAAO,WAAgBA,EAAO,WAAgB,IAE1DrG,EAAS+E,UAAU5E,EAAGoG,MAAM5B,MAAQxE,EAAGoG,MAAM5B,MAAQ,GACtCxE,EAAGoG,MAAMb,MAAQvF,EAAGoG,MAAMb,MAAQ,GAClCvF,EAAGoG,MAAMZ,UAAYxF,EAAGoG,MAAMZ,UAAY,GAC1CxF,EAAGoG,MAAMX,SAAWzF,EAAGoG,MAAMX,SAAW,GACxCzF,EAAGoG,MAAMV,QAAU1F,EAAGoG,MAAMV,QAAU,GACrC1F,EAAGoG,MAAMT,aAAuCvF,QAAxBJ,EAAGoG,MAAMT,aAA4B,GAAO,EACpE3F,EAAGoG,MAAMC,YAAqCjG,QAAvBJ,EAAGoG,MAAMC,YAA2B,GAAO,GAAO3E,KAAK,SAAUI,GACxG9B,EAAGsG,YAAY9F,KAAOsB,EAAStB,KAC/BR,EAAG6F,aAAc,QAIrB7F,GAAGoG,OACC5B,MAAO,GACPe,MAAO,GACPC,UAAW,GACXC,SAAU,GACVC,QAAS,GACTC,YAAa,GACbU,WAAW,GAInBrG,GAAGsG,aACCC,aAAa,EACbC,wBAAwB,EACxBC,cAAezG,EAAG8F,YAClBY,0BAA0B,EAC1BC,cAAe,SAAUC,GACrB5G,EAAG4G,QAAUA,EACb5G,EAAG4G,QAAQC,UAAUC,GAAGC,oBAAoB,KAAM,SAAUC,GACxD,GAAIC,GAAKD,EAAIE,OAAOvC,EACpB/E,GAAUoC,KAAK,mBAAqBiF,MAG5CE,aACGC,KAAM,QAASC,YAAa,QAASC,MAAO,MAC5CF,KAAM,YAAaC,YAAa,aAAcC,MAAO,MACrDF,KAAM,WAAYC,YAAa,YAAaC,MAAO,MACnDF,KAAM,SAAUC,YAAa,SAAUC,MAAO,KAC9CF,KAAM,UAAWC,YAAa,UAAWC,MAAO,MAChDF,KAAM,QAASC,YAAa,QAASC,MAAO,OAInDtH,EAAGuH,eAAiB,WAChB3H,EAAUoC,KAAK,oBAEnBhC,EAAGwH,SAAW,WACVxB,aAAayB,QAAQ,mBAAoB5D,QAAQ6D,OAAO1H,EAAGoG,QAC3DvG,EAAS+E,UAAU5E,EAAGoG,MAAM5B,MAAQxE,EAAGoG,MAAM5B,MAAQ,GAClCxE,EAAGoG,MAAMb,MAAQvF,EAAGoG,MAAMb,MAAQ,GAClCvF,EAAGoG,MAAMZ,UAAYxF,EAAGoG,MAAMZ,UAAY,GAC1CxF,EAAGoG,MAAMX,SAAWzF,EAAGoG,MAAMX,SAAW,GACxCzF,EAAGoG,MAAMV,QAAU1F,EAAGoG,MAAMV,QAAU,GACrC1F,EAAGoG,MAAMT,aAAuCvF,QAAxBJ,EAAGoG,MAAMT,aAA4B,GAAO,EACpE3F,EAAGoG,MAAMC,YAAqCjG,QAAvBJ,EAAGoG,MAAMC,YAA2B,GAAO,GACtF3E,KAAK,SAAUI,GACZ9B,EAAGsG,YAAY9F,KAAOsB,EAAStB,KAC/BR,EAAG6F,aAAc,GAClB,SAAU/D,GACTnC,EAAKoC,MAAMD,MA7EtB8D,EAAqBxC,SAAW,OAAQ,WAAY,aALpDS,QACGC,OAAO,SACPsB,WAAW,uBAAwBQ,MAuF1C,WACI,YAKA,SAAS+B,GAAwBhI,EAAME,EAAUC,EAAcF,EAAWG,GACtE,GAAIC,GAAKC,IACTD,GAAG4H,OAAS9H,EAAamH,GACzBjH,EAAG6H,cAAgB,GACnB7H,EAAGG,WAA0B,IAAbH,EAAG4H,QAA6BxH,QAAbJ,EAAG4H,OACtC5H,EAAGK,UAAYL,EAAGG,WAAa,OAAS,SACxCH,EAAGM,QAAUN,EAAGG,WAAa,OAAS,aACtCH,EAAGO,gBAAkB,WACjB,GAAIC,IACAsH,OAAQhH,SAASd,EAAG4H,QAAU9G,SAASd,EAAG4H,QAAU,EACpDG,UAAW/H,EAAGwF,UACdwC,SAAUhI,EAAGyF,SACbwC,QAASjI,EAAG0F,QACZwC,MAAO,KACPC,SAAUnI,EAAGoI,QACbC,SAAU,KACVC,KAAMtI,EAAGuI,KACTC,UAAWxI,EAAGyI,MACdC,WAAY1I,EAAG2I,IACfC,MAAO5I,EAAGuF,MACVsD,UAAW7I,EAAG8I,UACdC,cAAe/I,EAAGgJ,YAClBC,OAAQjJ,EAAGkJ,OAASlJ,EAAGkJ,QAAS,EAChCC,YAAanJ,EAAGoJ,YAAcpJ,EAAGoJ,cAAiBC,QAAW,GAAIC,UAAa,GAAIC,UAAa,GAAIC,UAAa,KAChHC,sBAAuBzJ,EAAG0J,qBAAuB1J,EAAG0J,uBAAyBC,UAAa,EAAEC,YAAa,KAE7GrI,EAAUvB,EAAGG,WAAaN,EAASgK,WAAW7J,EAAG4H,OAAQpH,GAAQX,EAASiK,WAAWtJ,EACrFe,GAAQG,KAAK,WACT3B,EAAa4B,SAAUC,QAAS,sBAChC5B,EAAG6B,UACJ,SAAUC,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,OAAQH,QAAS,8BAIlC5B,EAAGG,YACHN,EAASkK,YAAY/J,EAAG4H,QACvBlG,KAAK,SAAUI,GACZ9B,EAAG6H,cAAgB/F,EAAStB,KAAKwJ,QACjChK,EAAGwE,MAAQ1C,EAAStB,KAAKiE,MACzBzE,EAAGwF,UAAY1D,EAAStB,KAAKuH,UAC7B/H,EAAGyF,SAAW3D,EAAStB,KAAKwH,SAC5BhI,EAAG0F,QAAU5D,EAAStB,KAAKyH,QACvBnG,EAAStB,KAAKyJ,UAAUC,OAAS,IACjClK,EAAGoI,QAAUtG,EAAStB,KAAKyJ,UAAU,GAAG9B,SACxCnI,EAAGuI,KAAOzG,EAAStB,KAAKyJ,UAAU,GAAG3B,KACrCtI,EAAGyI,MAAQ3G,EAAStB,KAAKyJ,UAAU,GAAGzB,UACtCxI,EAAG2I,IAAM7G,EAAStB,KAAKyJ,UAAU,GAAGvB,WACpC1I,EAAGmK,QAAUrI,EAAStB,KAAKyJ,UAAU,GAAGG,YACxCpK,EAAG8I,UAAYhH,EAAStB,KAAKyJ,UAAU,GAAGI,QAC1CrK,EAAGgJ,YAAclH,EAAStB,KAAKyJ,UAAU,GAAGlB,eAEhD/I,EAAGuF,MAAQzD,EAAStB,KAAKoI,MACzB5I,EAAGkJ,OAASpH,EAAStB,KAAKyI,OAC1BjJ,EAAGoJ,YAActH,EAAStB,KAAK2I,YAC/BnJ,EAAG0J,qBAAuB5H,EAAStB,KAAKiJ,sBACxC5J,EAASyK,YAAY5I,KAAK,SAAU6I,GAChCvK,EAAGwK,WAAaD,EAAgB/J,QAErC,SAAUsB,GACTnC,EAAKoC,MAAMD,KAEf9B,EAAGyK,kBAAoB,SAAUC,GAC7B,GAAc,IAAVA,GAA0BtK,QAAVsK,GAAuB1K,EAAG0J,qBAC1C,IAAK,GAAIiB,GAAI,EAAGA,EAAI3K,EAAG0J,qBAAqBQ,OAAQS,IAChD,GAAID,IAAW1K,EAAG0J,qBAAqBiB,GAAGhB,WAAa3J,EAAG0J,qBAAqBiB,GAAGf,WAC9E,OAAO,CAInB,QAAO,KAIX5J,EAAG4K,gBAAiB,EACpB5K,EAAG6H,eAAgB,GAEvB7H,EAAG6B,OAAS,WACRjC,EAAUoC,KAAK,gBAEnB,IAAI6I,GAAmB,WACnBhL,EAASyK,YAAY5I,KAAK,SAAU6I,GAChCvK,EAAGwK,WAAaD,EAAgB/J,QAGpCsK,EAAmB,WACnBjL,EAASkL,kBAAkBrJ,KAAK,SAAUI,GACtC9B,EAAGgL,YAAclJ,EAAStB,QAG9ByK,EAAgB,WAChBpL,EAASoL,gBAAgBvJ,KAAK,SAAUI,GACpC9B,EAAGkL,UAAYpJ,EAAStB,QAG5B2K,EAAe,WACftL,EAASsL,eAAezJ,KAAK,SAAUI,GACnC9B,EAAGoL,OAAStJ,EAAStB,OAG7BqK,KACAC,IACAG,IACAE,IAtGJxD,EAAwBvE,SAAW,OAAQ,WAAY,eAAgB,YAAa,gBANpFS,QACGC,OAAO,SACPsB,WAAW,0BAA2BuC,MA+G7C,WACI,YAKA,SAAS0D,GAAqB1L,EAAMC,EAAWC,GAC3C,GAAIG,GAAKC,IACTD,GAAGM,QAAU,aACbN,EAAGsG,aACCE,wBAAwB,EACxBE,0BAA0B,EAC1BH,aAAa,EACbY,aACMC,KAAM,OAAQC,YAAa,YAAaC,MAAO,MAC/CF,KAAM,cAAeC,YAAa,cAAeC,MAAO,IAAKgE,aAAc,mDAC3ElE,KAAM,WAAYC,YAAa,MAAOC,MAAO,KAC7CF,KAAM,YAAaC,YAAa,UAAWC,MAAO,KAClDF,KAAM,iBAAkBC,YAAa,mBAAoBC,MAAO,MAEhEF,KAAM,oBAAqBC,YAAa,mBAAoBC,MAAO,MAEzEX,cAAe,SAAUC,GACrBA,EAAQC,UAAUC,GAAGC,oBAAoB,KAAM,SAAUC,GACrD,GAAIC,GAAKD,EAAIE,OAAOvC,EACpB/E,GAAUoC,KAAK,wBAA0BiF,OAKrDjH,EAAGuH,eAAiB,WAChB3H,EAAUoC,KAAK,yBAEnBnC,EAASyK,YAAY5I,KAAK,SAAUI,GAChC9B,EAAGsG,YAAY9F,KAAOsB,EAAStB,MAChC,SAAUsB,GACTnC,EAAKoC,MAAMD,GACX/B,aAAagC,OAAQH,QAASE,EAASQ,eA5B/C+I,EAAqBjI,SAAW,OAAQ,YAAa,YAPrDS,QACGC,OAAO,SACPsB,WAAW,uBAAwBiG,MAwC1CxH,QACGC,OAAO,SACPsB,WAAW,0BAA2B1F,yBACtC6L,UAAU,iBAAkBhJ,uBA6E/B,WACI,YAKA,SAASiJ,GAAmB7L,EAAME,EAAUC,EAAcF,EAAWG,GACjE,GAAIC,GAAKC,IACTD,GAAGyL,MAAQ3L,EAAamH,GAExBjH,EAAG0L,WAAa,WACZ7L,EAAS6L,WAAW1L,EAAGyL,OACtB/J,KAAK,SAAUI,GACZ9B,EAAG2L,IAAM7J,EAAStB,KAAKoL,MACxB,SAAU9J,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,OAAQH,QAAS,qBAGtC5B,EAAG6L,UAAY,WACXhM,EAASgM,UAAU7L,EAAGyL,MAAOzL,EAAG2L,KAC/BjK,KAAK,WACF3B,EAAa4B,SAAUC,QAAS,gBAChChC,EAAUoC,KAAK,UAChB,SAAUF,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,OAAQH,QAAS,uBAItC5B,EAAG6B,OAAS,WACRjC,EAAUoC,KAAK,UAEnBhC,EAAG0L,aAvBPF,EAAmBpI,SAAW,OAAQ,WAAY,eAAgB,YAAa,gBAR/ES,QACGC,OAAO,SACPsB,WAAW,qBAAsBoG,MAkCxC,WACI,YAKA,SAASM,GAAenM,EAAME,EAAUD,EAAWG,GAC/C,GAAIC,GAAKC,IACTD,GAAG6F,aAAc,EACjB7F,EAAG8F,cACH,IAAIiG,GAAiB,yHACjBC,EAAiB,yHAErBhM,GAAGsG,aACCC,aAAa,EACbC,wBAAwB,EACxBE,0BAA0B,EAC1BD,cAAezG,EAAG8F,YAElBa,cAAe,SAAUC,GACrB5G,EAAG4G,QAAUA,GAEjBO,aACGC,KAAM,SAAUC,YAAa,SAAUC,MAAO,GAAIgE,aAAcS,IAChE3E,KAAM,KAAMC,YAAa,KAAMiE,aAAcU,IAC7C5E,KAAM,OAAQC,YAAa,UAGlCrH,EAAGuH,eAAiB,WAChB3H,EAAUoC,KAAK,UAEnBhC,EAAGiM,QAAU,WACTpM,EAASoM,UACTvK,KAAK,SAAUI,GACZ9B,EAAGsG,YAAY9F,KAAOsB,EAAStB,MAChC,SAAUsB,GACTnC,EAAKoC,MAAMD,MAGlB9B,EAAGkM,OAAS,WACRvM,EAAK2E,IAAI,MAAMtE,EAAG2L,OACd3L,EAAG2L,KAAO3L,EAAG2L,IAAIzB,OAAS,KAAInK,EAAagC,OAAQH,QAAS,uCAChE/B,EAASsM,UAAUnM,EAAG2L,KACtBjK,KAAK,WACD3B,EAAa4B,SAAUC,QAAS,cAChC5B,EAAGiM,UACHjM,EAAG2L,IAAM,MACX,SAAU7J,GACT/B,EAAagC,OAAQH,QAAS,sBAC9BjC,EAAKoC,MAAMD,MAGlB9B,EAAGoM,UAAY,SAASpF,GACjB9D,QAAQ,0BAA4B8D,EAAIE,OAAO,KAAU,MACxDrH,EAASwM,UAAUrF,EAAIE,OAAOvC,IAAIjD,KAAK,SAAUI,GAC7C,GAAIA,GAA6B,GAAjBA,EAAStB,KAAe,CACpC,GAAI8L,GAAQtM,EAAGsG,YAAY9F,KAAK+L,QAAQvF,EAAIE,OAC5ClH,GAAGsG,YAAY9F,KAAKgM,OAAOF,EAAO,GAClCvM,EAAa4B,SAAUC,QAAS,oBAGhC7B,GAAagC,OAAQH,QAAS,uDAElChC,GAAUoC,KAAK,SAChB,SAAUD,GACTpC,EAAKoC,MAAMA,GACXhC,EAAagC,OAAQH,QAAS,4BAI1C5B,EAAGiM,UA3DPH,EAAe1I,SAAW,OAAQ,WAAY,YAAa,gBAT3DS,QACGC,OAAO,SACPsB,WAAW,iBAAkB0G,MAuEpC,WACI,YAKA,SAASW,GAAwB9M,EAAME,EAAUC,EAAcF,EAAWG,GACtE,GAAIC,GAAKC,IACTD,GAAG0M,WAAa5M,EAAamH,GAC7BjH,EAAGG,WAA8B,IAAjBH,EAAG0M,YAAqCtM,QAAjBJ,EAAG0M,WAC1C1M,EAAGK,UAAYL,EAAGG,WAAa,OAAS,SACxCH,EAAGM,QAAUN,EAAGG,WAAa,OAAS,aACtCH,EAAG2M,YAAc,WACb,GAAInM,IACAoL,KAAM5L,EAAG4L,KACTgB,aAAc5M,EAAG4M,aACjBC,QAAS7M,EAAG6M,QACZC,QAAS9M,EAAG8M,QACZC,SAAU/M,EAAG+M,UAEjBxL,EAAUvB,EAAGG,WAAaN,EAASmN,eAAehN,EAAG0M,WAAYlM,GAAQX,EAASoN,eAAezM,EACjGe,GAAQG,KAAK,WACT3B,EAAa4B,SAAUC,QAAS,0BAChC5B,EAAG6B,UACJ,SAAUC,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,OAAQH,QAAS,kCAGtC5B,EAAG6B,OAAS,WACRjC,EAAUoC,KAAK,oBAEnB,IAAIkL,GAAmB,WACnB,GAAIC,GAAetN,EAASuN,gBAAgBpN,EAAG0M,WAC/CS,GAAazL,KAAK,SAAUI,GACxB9B,EAAG4L,KAAO9J,EAAStB,KAAKoL,KACxB5L,EAAG4M,aAAe9K,EAAStB,KAAKoM,aAChC5M,EAAG6M,QAAU/K,EAAStB,KAAKqM,QAC3B7M,EAAG8M,QAAUhL,EAAStB,KAAKsM,QAC3B9M,EAAG+M,SAAWjL,EAAStB,KAAKuM,UAC7B,SAAUjL,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,OAAQH,QAAS,yCAA2C5B,EAAG0M,eAGhF1M,GAAGG,YACH+M,IAlCRT,EAAwBrJ,SAAW,OAAQ,WAAY,eAAgB,YAAa,gBAVpFS,QACGC,OAAO,SACPsB,WAAW,+BAAgCqH,MAgDlD,WACI,YAKA,SAASY,GAAoB1N,EAAME,EAAUD,GACzC,GAAII,GAAKC,IACTD,GAAGM,QAAU,YACbN,EAAG8F,eACH9F,EAAGsG,aACCC,aAAa,EACbC,wBAAwB,EACxBC,cAAezG,EAAG8F,YAClBY,0BAA0B,EAC1BC,cAAe,SAAUC,GACrB5G,EAAG4G,QAAUA,EACb5G,EAAG4G,QAAQC,UAAUC,GAAGC,oBAAoB,KAAM,SAAUC,GACxD,GAAIC,GAAKD,EAAIE,OAAOvC,EACpB/E,GAAUoC,KAAK,uBAAyBiF,MAGhDE,aACMC,KAAM,OAAQC,YAAa,gBAAiBC,MAAO,MACnDF,KAAM,eAAgBC,YAAa,gBAAiBC,MAAO,MAC3DF,KAAM,UAAWC,YAAa,WAAYC,MAAO,MACjDF,KAAM,UAAWC,YAAa,cAIxCrH,EAAGuH,eAAiB,WAChB3H,EAAUoC,KAAK,wBAEnBnC,EAASqC,eAAeR,KAAK,SAAUI,GACnC9B,EAAGsG,YAAY9F,KAAOsB,EAAStB,MAChC,SAAUsB,GACTnC,EAAKoC,MAAMD,KAvBnBuL,EAAoBjK,SAAW,OAAQ,WAAY,aAXnDS,QACGC,OAAO,SACPsB,WAAW,2BAA4BiI,MAsC9C,WACI,YAKA,SAASC,GAAuB3N,EAAME,EAAUC,EAAcF,EAAWG,GACrE,GAAIC,GAAKC,IACTD,GAAGuN,UAAYzN,EAAamH,GAC5BjH,EAAGG,WAAaH,EAAGuN,WAA6B,IAAhBvN,EAAGuN,UACnCvN,EAAGK,UAAYL,EAAGG,WAAa,OAAS,SACxCH,EAAGM,QAAUN,EAAGG,WAAa,OAAS,aACtCH,EAAG2M,YAAc,WACb,GAAInM,IACAoL,KAAM5L,EAAG4L,KACT4B,aAAcxN,EAAGwN,aACjB3M,SAAUC,SAASd,EAAGa,SAAS,KAEnCU,EAAUvB,EAAGG,WAAaN,EAAS4N,cAAczN,EAAGuN,UAAW/M,GAAQX,EAAS6N,cAAclN,EAC9Fe,GAAQG,KAAK,WACT3B,EAAa4B,SAAUC,QAAS,yBAChC5B,EAAG6B,UACJ,SAAUC,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,OAAQH,QAAS,iCAGtC5B,EAAG6B,OAAS,WACRjC,EAAUoC,KAAK,mBAEnB,IAAI2L,GAAkB,WAClB9N,EAAS+N,eAAe5N,EAAGuN,WAC1B7L,KAAK,SAAUI,GACZ9B,EAAG4L,KAAO9J,EAAStB,KAAKoL,KACxB5L,EAAGwN,aAAe1L,EAAStB,KAAKgN,aAChCxN,EAAGa,SAAWiB,EAAStB,KAAKK,UAC7B,SAAUiB,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,OAAQH,QAAS,wCAA0C5B,EAAGuN,cAG/EvN,GAAGG,YACHwN,IA5BRL,EAAuBlK,SAAW,OAAQ,WAAY,eAAgB,YAAa,gBAZnFS,QACGC,OAAO,SACPsB,WAAW,8BAA+BkI,MA4CjD,WACI,YAKA,SAASO,GAAmBlO,EAAME,EAAUD,GACxC,GAAII,GAAKC,IACTD,GAAGM,QAAU,WACbN,EAAG8F,eACH9F,EAAGsG,aACCC,aAAc,EACdC,wBAAyB,EACzBC,cAAgBzG,EAAG8F,YACnBY,0BAA0B,EAC1BC,cAAgB,SAAUC,GACtB5G,EAAG4G,QAAUA,EACb5G,EAAG4G,QAAQC,UAAUC,GAAGC,oBAAoB,KAAM,SAAUC,GACxD,GAAIC,GAAKD,EAAIE,OAAOvC,EACpB/E,GAAUoC,KAAK,sBAAwBiF,MAG/CE,aACMC,KAAM,OAAQC,YAAa,eAAgBC,MAAM,MACjDF,KAAM,WAAYC,YAAa,MAAOC,MAAO,KAC7CF,KAAM,eAAgBC,YAAa,mBAI7CrH,EAAGuH,eAAiB,WAChB3H,EAAUoC,KAAK,uBAEnBnC,EAASiO,cAAcpM,KAAK,SAAUI,GAClC9B,EAAGsG,YAAY9F,KAAOsB,EAAStB,MAChC,SAAUsB,GACTnC,EAAKoC,MAAMD,KApBnB+L,EAAmBzK,SAAW,OAAQ,WAAY,aAblDS,QACGC,OAAO,SACPsB,WAAW,0BAA2ByI,MAqC7C,WACI,YAKA,SAASE,GAAsBpO,EAAME,EAAU2C,GAC3C,GAAIxC,GAAKC,IACTD,GAAGM,QAAU,cACbN,EAAGgO,aAAc,EACjBhO,EAAGsG,aAEC2H,gBAAgB,EAChBC,iBAAiB,EACjBC,oBAAqBnO,EAAGM,QAAS,OACjC8N,uBAAwBvK,QAAQlB,QAAQH,EAAQ6L,SAASC,iBAAiB,8BAC1E/H,aAAa,EAEbC,wBAAwB,EACxBE,0BAA0B,EAC1B6H,kBAAkB,EAClBC,0BAA0B,EAC1BC,qBAAsB,GAAI,GAAI,IAC9BC,mBAAoB,GACpBvH,aACOC,KAAM,KAAMC,YAAa,KAAMC,MAAO,MACtCF,KAAM,QAASC,YAAa,QAASC,MAAO,MAC5CF,KAAM,QAASC,YAAa,QAASC,MAAO,MAC5CF,KAAM,YAAaC,YAAa,aAAcC,MAAO,MACrDF,KAAM,WAAYC,YAAa,YAAaC,MAAO,MACnDF,KAAM,UAAWC,YAAa,UAAWC,MAAO,MAChDF,KAAM,QAASC,YAAa,QAASC,MAAO,MAC5CF,KAAM,WAAYC,YAAa,UAAWC,MAAO,MACjDF,KAAM,OAAQC,YAAa,OAAQC,MAAO,MAC1CF,KAAM,QAASC,YAAa,QAASC,MAAO,MAC5CF,KAAM,MAAOC,YAAa,MAAOC,MAAO,MACxCF,KAAM,cAAeC,YAAa,eAAgBC,MAAO,MACzDF,KAAM,cAAeC,YAAa,eAAgBC,MAAO,MACzDF,KAAM,QAASC,YAAa,QAASC,MAAO,MAC5CF,KAAM,cAAeC,YAAa,cAAeC,MAAO,MACxDF,KAAM,cAAeC,YAAa,eAAgBC,MAAO,MACzDF,KAAM,eAAgBC,YAAa,gBAAiBC,MAAO,MAC3DF,KAAM,kBAAmBC,YAAa,mBAAoBC,MAAO,IAAKgE,aAAc,+FACpFlE,KAAM,UAAWC,YAAa,UAAWC,MAAO,IAAKgE,aAAc,sFACnElE,KAAM,UAAWC,YAAa,UAAWC,MAAO,IAAKgE,aAAc,sFACnElE,KAAM,UAAWC,YAAa,UAAWC,MAAO,IAAKgE,aAAc,sFACnElE,KAAM,WAAYC,YAAa,WAAYC,MAAO,IAAKgE,aAAc,uFACrElE,KAAM,WAAYC,YAAa,WAAYC,MAAO,IAAKgE,aAAc,uFACrElE,KAAM,UAAWC,YAAa,UAAWC,MAAO,IAAKgE,aAAc,sFACnElE,KAAM,UAAWC,YAAa,UAAWC,MAAO,IAAKgE,aAAc,sFACnElE,KAAM,WAAYC,YAAa,WAAYC,MAAO,IAAKgE,aAAc,uFACrElE,KAAM,UAAWC,YAAa,UAAWC,MAAO,IAAKgE,aAAc,sFACnElE,KAAM,WAAYC,YAAa,WAAYC,MAAO,IAAKgE,aAAc,uFACrElE,KAAM,UAAWC,YAAa,UAAWC,MAAO,IAAKgE,aAAc,sFACnElE,KAAM,UAAWC,YAAa,UAAWC,MAAO,IAAKgE,aAAc,sFACnElE,KAAM,UAAWC,YAAa,UAAWC,MAAO,IAAKgE,aAAc,sFACnElE,KAAM,WAAYC,YAAa,WAAYC,MAAO,IAAKgE,aAAc,uFACrElE,KAAM,UAAWC,YAAa,UAAWC,MAAO,IAAKgE,aAAc,sFACnElE,KAAM,UAAWC,YAAa,UAAWC,MAAO,IAAKgE,aAAc,sFACnElE,KAAM,UAAWC,YAAa,UAAWC,MAAO,IAAKgE,aAAc,sFACnElE,KAAM,UAAWC,YAAa,UAAWC,MAAO,IAAKgE,aAAc,sFACnElE,KAAM,WAAYC,YAAa,WAAYC,MAAO,IAAKgE,aAAc,uFACrElE,KAAM,UAAWC,YAAa,UAAWC,MAAO,IAAKgE,aAAc,sFACnElE,KAAM,SAAUC,YAAa,SAAUC,MAAO,IAAKgE,aAAc,qFACjElE,KAAM,oBAAqBC,YAAa,uBAAwBC,MAAO,IAAKgE,aAAc,gGAC1FlE,KAAM,WAAYC,YAAa,YAAaC,MAAO,IAAKgE,aAAc,uFACtElE,KAAM,cAAeC,YAAa,aAAcC,MAAO,MACvDF,KAAM,WAAYC,YAAa,WAAYC,MAAO,MAClDF,KAAM,aAAcC,YAAa,eAAgBC,MAAO,MACxDF,KAAM,oBAAqBC,YAAa,uBAAwBC,MAAO,MACvEF,KAAM,mBAAoBC,YAAa,sBAAuBC,MAAO,MACrEF,KAAM,gBAAiBC,YAAa,kBAAmBC,MAAO,MAErEX,cAAe,SAAUC,GACrB5G,EAAG4G,QAAUA,IAGrB/G,EAAS8O,gBAAgBjN,KAAK,SAAUI,GACpCnC,EAAK2E,IAAItE,EAAGsG,YAAYa,YACxBnH,EAAGsG,YAAY9F,KAAOsB,EAAStB,KAC/BR,EAAGgO,aAAc,GAClB,SAAUlM,GACTnC,EAAKoC,MAAMD,KAlEnBiM,EAAsB3K,SAAW,OAAQ,WAAY,WAdrDS,QACGC,OAAO,SACPsB,WAAW,wBAAyB2I,MAmF3C,WACI,YAKA,SAASa,GAAoB9O,EAAcH,EAAME,EAAUD,EAAWiP,EAASC,EAAQC,EAAWvM,EAASzC,EAAciP,GAmGrH,QAASC,GAAkBnN,GACvB9B,EAAGkP,eAAgB,CACnB,IAAIC,GAAYrN,EAAStB,KAAK4O,IAAI,GAC9BC,EAAUC,EAAuBH,EAIrC,IAHAnP,EAAGsG,YAAYa,WAAakI,EAC5BrP,EAAGuP,WAAazN,EAAStB,KACzBR,EAAGwP,eAAkBC,WAAY,WAC9BzP,EAAGuP,WAAWrF,OAAS,EAC1B,CACIvK,EAAK2E,IAAItE,EAAGuP,WACZ,IAAIG,GAAcC,OAAOC,oBAAoB5P,EAAGuP,WAAW,GAC3D1L,SAAQgM,QAAQH,EAAa,SAAUI,GACnC,GAAmB,eAAfA,EAA6B,CAC7BnQ,EAAK2E,IAAIwL,EACT,IAAIC,GAAe,CACnBlM,SAAQgM,QAAQ7P,EAAGuP,WAAY,SAAUS,GACrCD,GAAgBC,EAAUF,KAE9B9P,EAAGwP,cAAcM,IAAeC,EAAe/P,EAAGuP,WAAWrF,QAAQ+F,QAAQ,MAGrFjQ,EAAGuP,WAAW9L,KAAKzD,EAAGwP,eACtBxP,EAAGsG,YAAY9F,KAAOR,EAAGuP,WACzBvP,EAAGsG,YAAY9F,KAAOR,EAAGuP,WACzBvP,EAAGkQ,cAAe,EAClBlQ,EAAGmQ,UAAW,EACdnQ,EAAGoQ,aAAc,MAGjBpQ,GAAGmQ,UAAW,EACdnQ,EAAGoQ,aAAc,EAGzB,QAASC,GAAYvO,GACjBnC,EAAKoC,MAAMD,GAEf,QAASwN,GAAuBH,GAC5B,GAAImB,KACJ,KAAK,GAAIC,KAAYpB,GAAW,CAC5B,GAAIA,EAAUqB,eAAeD,GAAW,CAChCA,EAASE,WAAW,SACpBzQ,EAAG0Q,eAAejN,KAAK8M,GAElBA,EAASE,WAAW,SACzBzQ,EAAG2Q,gBAAgBlN,KAAK8M,EAE5B,IAAIK,IAAWC,MAAON,EAAUjJ,MAAO,KAE3CgJ,EAAkB7M,KAAKmN,GAE3B,MAAON,GApJX,GAAItQ,GAAKC,KACT6Q,EAAS,aACTC,EAAQ,GAAIC,MACZC,EAAc,GAAID,KAClBC,GAAYC,QAAQH,EAAMI,UAAY,IACtCnR,EAAGM,QAAU,8BACbN,EAAGmQ,UAAW,EACdnQ,EAAGoQ,aAAc,EACjBpQ,EAAGoR,UAAYvC,EAAQ,QAAQoC,EAAaH,GAC5C9Q,EAAGqR,QAAUxC,EAAQ,QAAQkC,EAAOD,GACpC9Q,EAAGsR,WACCC,MAAO1C,EAAQ,QAAQ7O,EAAGoR,UAAW,cACrCI,IAAK3C,EAAQ,QAAQ7O,EAAGqR,QAAS,eAErCrR,EAAGkP,eAAgB,EACnBlP,EAAG2Q,mBACH3Q,EAAG0Q,kBACH1Q,EAAGsG,aACC9F,QACAiR,iBAAiB,EACjBxD,gBAAgB,EAChBC,iBAAiB,EACjBC,oBAAqBnO,EAAGM,QAAU,OAClC8N,uBAAwBvK,QAAQlB,QAAQH,EAAQ6L,SAASC,iBAAiB,8BAC1E/H,aAAa,EACbC,wBAAwB,EACxBE,0BAA0B,EAC1B6H,kBAAkB,EAClBC,0BAA0B,EAC1BC,qBAAsB,GAAI,GAAI,IAC9BC,mBAAoB,GACpB/H,cAAe,SAAUC,GACrB5G,EAAG4G,QAAUA,IAGrB/G,EAASyK,YAAY5I,KAAK,SAAUI,GAChC9B,EAAG0R,OAAS5P,EAAStB,KACrBR,EAAG2R,oBACH9N,QAAQgM,QAAQ7P,EAAG0R,OAAQ,SAAUE,GACjC5R,EAAG2R,iBAAiBC,EAAMnR,MAAQmR,EAAMjR,eAE7C,SAAUmB,GACTnC,EAAKoC,MAAMD,KAGf9B,EAAG6R,uBACH7R,EAAG8R,2BAEHhD,EAAOiD,OAAO,sBAAuB,SAAUC,GAC3ChS,EAAGiS,2BAEED,GAGLnO,QAAQgM,QAAQmC,EAAa,SAAUE,GACnClS,EAAGiS,wBAAwBxO,KAAKyO,EAAIjL,GAAGkL,gBAG/CrD,EAAOiD,OAAO,0BAA2B,SAAUC,GAC/ChS,EAAGoS,+BAEEJ,GAGLnO,QAAQgM,QAAQmC,EAAa,SAAUE,GACnClS,EAAGoS,4BAA4B3O,KAAKyO,EAAIjL,GAAGkL,gBAInDnS,EAAGqS,yBAA2B,SAAUC,GACpC,MAAOtS,GAAG2R,iBAAiBW,GAAWC,QAAQ,kBAAmB,MAGrEvS,EAAGwS,YAAc,WACb,GAAIjB,GAAQ1C,EAAQ,QAAQ7O,EAAGoR,UAAW,cACtCI,EAAM3C,EAAQ,QAAQ7O,EAAGqR,QAAS,aACtCxR,GAAS4S,aAAalB,EAAOC,EAAKxR,EAAGiS,wBAAyBjS,EAAGoS,6BAC5D1Q,KAAKuN,EAAmBoB,IAGjCrQ,EAAG0S,eAAiB,WAChB,GAAIC,GAAa,eAAiB5D,EAAU,GAAG6D,eAAe,cAAcC,UAAUN,QAAQ,mBAAoB,IAAIA,QAAQ,OAAQ,KAAO,iBACzI/R,GACIsS,SAAU,sBACVC,OAAQJ,EACRK,OAAQ,EACRC,WAAW,EAEnBtT,GAAK2E,IAAI9D,GACTX,EAASqT,YAAY1S,GAAMkB,KAAK,SAAUI,GACtCnC,EAAK2E,IAAIxC,GACTkN,EAAUmE,OAAOrR,EAAStB,KAAMA,EAAKsS,WACtC,SAAUhR,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,MAAM,iCApF/B6M,EAAoBxL,SAAW,eAAgB,OAAQ,WAAY,YAAa,UAAW,SAAU,YAAa,UAAW,eAAgB,aAf7IS,QACGC,OAAO,SACPsB,WAAW,sBAAuBwJ,MA6JzC,WACI,YAKA,SAASwE,GAAuBtT,EAAcH,EAAME,EAAUD,EAAWiP,EAASrM,GAC9E,GAAIxC,GAAKC,KACT6Q,EAAS,aACTC,EAAQ,GAAIC,MACZC,EAAc,GAAID,KAClBhR,GAAGmQ,UAAW,EACdnQ,EAAGoQ,aAAc,EACjBa,EAAYC,QAAQH,EAAMI,UAAY,IACtCnR,EAAGM,QAAU,sBACbN,EAAGoR,UAAYvC,EAAQ,QAAQoC,EAAaH,GAC5C9Q,EAAGqR,QAAUxC,EAAQ,QAAQkC,EAAOD,GACpC9Q,EAAGsR,WACCC,MAAO1C,EAAQ,QAAQ7O,EAAGoR,UAAW,cACrCI,IAAK3C,EAAQ,QAAQ7O,EAAGqR,QAAS,eAGrCrR,EAAGsG,aACCmL,iBAAiB,EACjBxD,gBAAgB,EAChBC,iBAAiB,EACjBC,oBAAqBnO,EAAGM,QAAU,OAClC8N,uBAAwBvK,QAAQlB,QAAQH,EAAQ6L,SAASC,iBAAiB,8BAC1E/H,aAAa,EACbC,wBAAwB,EACxBE,0BAA0B,EAC1B6H,kBAAkB,EAClBC,0BAA0B,EAC1BC,qBAAsB,GAAI,GAAI,IAC9BC,mBAAoB,GACpB/H,cAAe,SAAUC,GACrB5G,EAAG4G,QAAUA,GAEjBO,aACMC,KAAM,KAAMC,YAAa,KAAMC,MAAO,KACtCF,KAAM,UAAWC,YAAa,WAAYC,MAAO,MACjDF,KAAM,eAAgBC,YAAa,UAAWC,MAAO,MACrDF,KAAM,aAAcC,YAAa,cAAeC,MAAO,MACvDF,KAAM,cAAeC,YAAa,cAAeC,MAAO,MACxDF,KAAM,WAAYC,YAAa,WAAYC,MAAO,MAClDF,KAAM,OAAQC,YAAa,OAAQC,MAAO,KAC1CF,KAAM,UAAWiM,QAAS,OAAQ/L,MAAO,OAInDtH,EAAGsT,UAAY,WACX,GAAI/B,GAAQ1C,EAAQ,QAAQ7O,EAAGoR,UAAW,cAC1CI,EAAM3C,EAAQ,QAAQ7O,EAAGqR,QAAS,aAClCxR,GAAS0T,sBAAsBhC,EAAOC,GAAK9P,KAAK,SAAUI,GAClDA,EAAStB,KAAK0J,OAAS,GACvBlK,EAAGsG,YAAY9F,KAAOsB,EAAStB,KAC/BR,EAAGmQ,UAAW,EACdnQ,EAAGoQ,aAAc,IAGjBpQ,EAAGmQ,UAAW,EACdnQ,EAAGoQ,aAAc,GAErBzQ,EAAKoC,MAAMD,IACZ,SAAUA,GACTnC,EAAKoC,MAAMD,MA/CvBsR,EAAuBhQ,SAAW,eAAgB,OAAQ,WAAY,YAAa,UAAW,WAhB9FS,QACGC,OAAO,SACPsB,WAAW,yBAA0BgO,MAoE5C,WACI,YAKA,SAASI,GAA4B1T,EAAcH,EAAME,EAAUD,EAAWiP,EAASrM,GACnF,GAAIxC,GAAKC,KACT8Q,EAAQ,GAAIC,MACZF,EAAS,aACTG,EAAc,GAAID,KAClBC,GAAYC,QAAQH,EAAMI,UAAY,IACtCnR,EAAGM,QAAU,sBACbN,EAAGmQ,UAAW,EACdnQ,EAAGoQ,aAAc,EACjBpQ,EAAGoR,UAAYvC,EAAQ,QAAQoC,EAAaH,GAC5C9Q,EAAGqR,QAAUxC,EAAQ,QAAQkC,EAAOD,GACpC9Q,EAAGsR,WACCC,MAAO1C,EAAQ,QAAQ7O,EAAGoR,UAAW,cACrCI,IAAK3C,EAAQ,QAAQ7O,EAAGqR,QAAS,eAGrCrR,EAAGsG,aACCmL,iBAAiB,EACjBxD,gBAAgB,EAChBC,iBAAiB,EACjBC,oBAAqBnO,EAAGM,QAAU,OAClC8N,uBAAwBvK,QAAQlB,QAAQH,EAAQ6L,SAASC,iBAAiB,8BAC1E/H,aAAa,EACbC,wBAAwB,EACxBE,0BAA0B,EAC1B6H,kBAAkB,EAClBC,0BAA0B,EAC1BC,qBAAsB,GAAI,GAAI,IAC9BC,mBAAoB,GACpB/H,cAAe,SAAUC,GACrB5G,EAAG4G,QAAUA,GAEjBO,aACMC,KAAM,UAAWC,YAAa,KAAMC,MAAO,MAC3CF,KAAM,YAAaC,YAAa,aAAcC,MAAO,MACrDF,KAAM,WAAYC,YAAa,YAAaC,MAAO,MACnDF,KAAM,UAAWC,YAAa,UAAWC,MAAO,MAChDF,KAAM,QAASC,YAAa,QAASC,MAAO,MAC5CF,KAAM,WAAYC,YAAa,UAAWC,MAAO,MACjDF,KAAM,OAAQC,YAAa,OAAQC,MAAO,MAC1CF,KAAM,YAAaC,YAAa,QAASC,MAAO,MAChDF,KAAM,aAAcC,YAAa,MAAOC,MAAO,MAC/CF,KAAM,UAAWC,YAAa,eAAgBC,MAAO,MACrDF,KAAM,cAAeC,YAAa,eAAgBC,MAAO,MACzDF,KAAM,QAASC,YAAa,QAASC,MAAO,MAC5CF,KAAM,QAASC,YAAa,QAASC,MAAO,MAC5CF,KAAM,YAAaC,YAAa,iBAAkBC,MAAO,MACzDF,KAAM,kBAAmBC,YAAa,UAAWC,MAAO,MACxDF,KAAM,kBAAmBC,YAAa,cAAeC,MAAO,MAC5DF,KAAM,cAAeC,YAAa,aAAcC,MAAO,MACvDF,KAAM,SAAUC,YAAa,UAAWC,MAAO,MAC/CF,KAAM,cAAeC,YAAa,gBAAiBC,MAAO,MAC1DF,KAAM,SAAUC,YAAa,eAAgBC,MAAO,MACpDF,KAAM,gBAAiBC,YAAa,iBAAkBC,MAAO,MAC7DF,KAAM,YAAaC,YAAa,aAAcC,MAAO,MACrDF,KAAM,cAAeC,YAAa,eAAgBC,MAAO,MACzDF,KAAM,iBAAkBC,YAAa,kBAAmBC,MAAO,MAC/DF,KAAM,aAAcC,YAAa,eAAgBC,MAAO,MACxDF,KAAM,mBAAoBC,YAAa,oBAAqBC,MAAO,OAI7EtH,EAAGsT,UAAY,WACX,GAAI/B,GAAQ1C,EAAQ,QAAQ7O,EAAGoR,UAAW,cAC1CI,EAAM3C,EAAQ,QAAQ7O,EAAGqR,QAAS,aAClCxR,GAAS4T,qBAAqBlC,EAAOC,GAAK9P,KAAK,SAAUI,GACjDA,EAAStB,KAAK0J,OAAS,GACvBlK,EAAGsG,YAAY9F,KAAOsB,EAAStB,KAC/BR,EAAGmQ,UAAW,EACdnQ,EAAGoQ,aAAc,IAGjBpQ,EAAGmQ,UAAW,EACdnQ,EAAGoQ,aAAc,IAEtB,SAAUtO,GACTnC,EAAKoC,MAAMD,MA/DvB0R,EAA4BpQ,SAAW,eAAgB,OAAQ,WAAY,YAAa,UAAW,WAjBnGS,QACGC,OAAO,SACPsB,WAAW,8BAA+BoO,MAqFjD,WACI,YAKA,SAASE,GAAgC5T,EAAcH,EAAME,EAAUD,EAAWiP,EAASE,EAAWvM,EAASzC,EAAciP,GACzH,GAAIhP,GAAKC,KACT6Q,EAAS,aACTC,EAAQ,GAAIC,MACZC,EAAc,GAAID,KAClBC,GAAYC,QAAQH,EAAMI,UAAY,IACtCnR,EAAGoR,UAAYvC,EAAQ,QAAQoC,EAAaH,GAC5C9Q,EAAGqR,QAAUxC,EAAQ,QAAQkC,EAAOD,GACpC9Q,EAAGM,QAAU,4BACbN,EAAG2T,eAAgB,EACnB3T,EAAGmQ,UAAW,EACdnQ,EAAGoQ,aAAc,EACjBpQ,EAAGsG,aACCmL,iBAAiB,EACjBxD,gBAAgB,EAChBC,iBAAiB,EACjBC,oBAAqBnO,EAAGM,QAAU,OAClC8N,uBAAwBvK,QAAQlB,QAAQH,EAAQ6L,SAASC,iBAAiB,8BAC1E/H,aAAa,EACbC,wBAAwB,EACxBE,0BAA0B,EAC1B6H,kBAAkB,EAClBC,0BAA0B,EAC1BC,qBAAsB,GAAI,GAAI,IAC9BC,mBAAoB,GACpB/H,cAAe,SAAUC,GACrB5G,EAAG4G,QAAUA,GAEnBO,aACIC,KAAM,eAAgBC,YAAa,gBAAiBC,MAAO,MAC3DF,KAAM,UAAWC,YAAa,UAAWC,MAAO,MAChDF,KAAM,cAAeC,YAAa,cAAeC,MAAO,MACxDF,KAAM,cAAeC,YAAa,cAAeC,MAAO,MACxDF,KAAM,OAAQC,YAAa,OAAQC,MAAO,MAC1CF,KAAM,YAAaC,YAAa,QAASC,MAAO,KAChDF,KAAM,WAAYC,YAAa,UAAWC,MAAO,MACjDF,KAAM,aAAcC,YAAa,MAAOC,MAAO,KAC/CF,KAAM,WAAYC,YAAa,WAAYC,MAAO,KAClDF,KAAM,QAASC,YAAa,eAAgBC,MAAO,OAGzDtH,EAAG4T,mBAAqB,WACpBA,EAAmB5T,EAAG6T,gBAE1B7T,EAAG8T,qBAAuB,WACtB,GAA0B,OAAtB9T,EAAG+T,gBACH/T,EAAGgU,SAAWhU,EAAGiU,gBAChB,CACD,GAAIC,GAAgBlU,EAAGiU,YAAYE,OAAO,SAAUC,GAChD,MAAOA,GAAIf,SAAWrT,EAAG+T,iBAE7B/T,GAAGgU,SAAWE,IAGtBrU,EAASyK,YAAY5I,KAAK,SAAUI,GAChC9B,EAAG0R,OAAS5P,EAAStB,KACrBR,EAAG2R,oBACH9N,QAAQgM,QAAQ7P,EAAG0R,OAAQ,SAAUE,GACjC5R,EAAG2R,iBAAiBC,EAAMjN,IAAMiN,EAAMjR,gBAG9CX,EAAGqS,yBAA2B,SAAUC,GACpC,MAAOtS,GAAG2R,iBAAiBW,GAAWC,QAAQ,kBAAmB,KAErE,IAAIqB,GAAqB,SAAUS,GAC/BxU,EAASyU,gBAAgBD,GAAS3S,KAAK,SAAUI,GAC7C9B,EAAGgU,SAAWlS,EAAStB,KAAK+T,MAC5BvU,EAAGiU,YAAcnS,EAAStB,KAAK+T,MAC/BvU,EAAGwU,SAAW1S,EAAStB,KAAKiU,SAC5BzU,EAAGwU,SAAS/Q,KAAK,OACjBzD,EAAG+T,gBAAkB,MACrB/T,EAAG2T,eAAgB,IAM3B3T,GAAG0U,SAAW,WACV,GAAInD,GAAQ1C,EAAQ,QAAQ7O,EAAGoR,UAAW,cAC1CI,EAAM3C,EAAQ,QAAQ7O,EAAGqR,QAAS,aAClCxR,GAAS8U,8BAA8B3U,EAAG6T,cAAetC,EAAOC,EAAKxR,EAAG+T,gBAAiB/T,EAAG4U,iBAAmB5U,EAAG4U,kBAAmB,GAAOlT,KAAK,SAAUI,GACvJ9B,EAAGuP,WAAazN,EAAStB,KACzBR,EAAGsG,YAAY9F,KAAOR,EAAGuP,WACzB5P,EAAKoC,MAAMD,GACP9B,EAAGuP,WAAWrF,OAAS,GACvBlK,EAAGmQ,UAAW,EACdnQ,EAAGoQ,aAAc,IAGjBpQ,EAAGmQ,UAAW,EACdnQ,EAAGoQ,aAAc,IAGtB,SAAUtO,GACTnC,EAAKoC,MAAMD,MAGnB9B,EAAG0S,eAAiB,WAChB,GAAIC,GAAa,eAAiB5D,EAAU,GAAG6D,eAAe,cAAcC,UAAUN,QAAQ,mBAAoB,IAAIA,QAAQ,OAAQ,KAAO,iBACzI/R,GACIsS,SAAU,kBACVC,OAAQJ,EACRK,OAAQ,EACRC,WAAW,EAEnBtT,GAAK2E,IAAI9D,GACTX,EAASqT,YAAY1S,GAAMkB,KAAK,SAAUI,GACtCnC,EAAK2E,IAAIxC,GACTkN,EAAUmE,OAAOrR,EAAStB,KAAMA,EAAKsS,WACtC,SAAUhR,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,MAAM,iCAjG/B2R,EAAgCtQ,SAAW,eAAgB,OAAQ,WAAY,YAAa,UAAW,YAAa,UAAW,eAAgB,aAlB/IS,QACGC,OAAO,SACPsB,WAAW,kCAAmCsO,MAwHrD,WACI,YAKA,SAASmB,GAA0B/U,EAAcH,EAAME,EAAUD,EAAWiP,EAASrM,GACjF,GAAIxC,GAAKC,KACT6Q,EAAS,aACTC,EAAQ,GAAIC,MACZC,EAAc,GAAID,KAClBC,GAAYC,QAAQH,EAAMI,UAAY,IACtCnR,EAAGoR,UAAYvC,EAAQ,QAAQoC,EAAaH,GAC5C9Q,EAAGqR,QAAUxC,EAAQ,QAAQkC,EAAOD,GACpC9Q,EAAGM,QAAU,qBACbN,EAAG2T,eAAgB,EACnB3T,EAAGmQ,UAAW,EACdnQ,EAAGoQ,aAAc,EACjBpQ,EAAGsG,aACCmL,iBAAiB,EACjBxD,gBAAgB,EAChBC,iBAAiB,EACjBC,oBAAqBnO,EAAGM,QAAU,OAClC8N,uBAAwBvK,QAAQlB,QAAQH,EAAQ6L,SAASC,iBAAiB,8BAC1E/H,aAAa,EACbC,wBAAwB,EACxBE,0BAA0B,EAC1B6H,kBAAkB,EAClBC,0BAA0B,EAC1BC,qBAAsB,GAAI,GAAI,IAC9BC,mBAAoB,GACpB/H,cAAe,SAAUC,GACrB5G,EAAG4G,QAAUA,GAEjBO,aACMC,KAAM,eAAgBC,YAAa,gBAAiBC,MAAO,MAC3DF,KAAM,UAAWC,YAAa,UAAWC,MAAO,MAChDF,KAAM,OAAQC,YAAa,OAAQC,MAAO,MAC1CF,KAAM,YAAaC,YAAa,QAASC,MAAO,KAChDF,KAAM,WAAYC,YAAa,UAAWC,MAAO,MACjDF,KAAM,aAAcC,YAAa,MAAOC,MAAO,KAC/CF,KAAM,WAAYC,YAAa,WAAYC,MAAO,MAI5DtH,EAAG4T,mBAAqB,WACpBA,EAAmB5T,EAAG6T,gBAE1B7T,EAAG8T,qBAAuB,WACtB,GAA0B,OAAtB9T,EAAG+T,gBACH/T,EAAGgU,SAAWhU,EAAGiU,gBAChB,CACD,GAAIC,GAAgBlU,EAAGiU,YAAYE,OAAO,SAAUC,GAChD,MAAOA,GAAIf,SAAWrT,EAAG+T,iBAE7B/T,GAAGgU,SAAWE,IAGtBrU,EAASyK,YAAY5I,KAAK,SAAUI,GAChC9B,EAAG0R,OAAS5P,EAAStB,MAEzB,IAAIoT,GAAqB,SAAUS,GAC/BxU,EAASyU,gBAAgBD,GAAS3S,KAAK,SAAUI,GAC7C9B,EAAGgU,SAAWlS,EAAStB,KAAK+T,MAC5BvU,EAAGiU,YAAcnS,EAAStB,KAAK+T,MAC/BvU,EAAGwU,SAAW1S,EAAStB,KAAKiU,SAC5BzU,EAAGwU,SAAS/Q,KAAK,OACjBzD,EAAG+T,gBAAkB,MACrB/T,EAAG2T,eAAgB,IAG3B3T,GAAG0U,SAAW,WACV,GAAInD,GAAQ1C,EAAQ,QAAQ7O,EAAGoR,UAAW,cAC1CI,EAAM3C,EAAQ,QAAQ7O,EAAGqR,QAAS,aAClCxR,GAASiV,0BAA0B9U,EAAG6T,cAAetC,EAAOC,EAAKxR,EAAG+T,gBAAiB/T,EAAG4U,iBAAmB5U,EAAG4U,kBAAmB,GAAOlT,KAAK,SAAUI,GAC/IA,EAAStB,KAAK0J,OAAS,GACvBlK,EAAGsG,YAAY9F,KAAOsB,EAAStB,KAC/BR,EAAGmQ,UAAW,EACdnQ,EAAGoQ,aAAc,IAGjBpQ,EAAGmQ,UAAW,EACdnQ,EAAGoQ,aAAc,IAEtB,SAAUtO,GACTnC,EAAKoC,MAAMD,MAhEvB+S,EAA0BzR,SAAW,eAAgB,OAAQ,WAAY,YAAa,UAAW,WAnBjGS,QACGC,OAAO,SACPsB,WAAW,4BAA6ByP,MAwF/C,WACI,YAKA,SAASE,GAA2BjV,EAAcH,EAAME,EAAUD,EAAWiP,EAAQrM,GACjF,GAAIxC,GAAKC,KACT6Q,EAAS,aACTC,EAAQ,GAAIC,MACZC,EAAc,GAAID,KAClBC,GAAYC,QAAQH,EAAMI,UAAY;AACtCnR,EAAGoR,UAAYvC,EAAQ,QAAQoC,EAAaH,GAC5C9Q,EAAGqR,QAAUxC,EAAQ,QAAQkC,EAAOD,GACpC9Q,EAAGM,QAAU,sBACbN,EAAG2T,eAAgB,EACnB3T,EAAGmQ,UAAW,EACdnQ,EAAGoQ,aAAc,EACjBpQ,EAAGsG,aACCmL,iBAAiB,EACjBxD,gBAAgB,EAChBC,iBAAiB,EACjBC,oBAAqBnO,EAAGM,QAAU,OAClC8N,uBAAwBvK,QAAQlB,QAAQH,EAAQ6L,SAASC,iBAAiB,8BAC1E/H,aAAa,EACbC,wBAAwB,EACxBE,0BAA0B,EAC1B6H,kBAAkB,EAClBC,0BAA0B,EAC1BC,qBAAsB,GAAI,GAAI,IAC9BC,mBAAoB,GACpB/H,cAAe,SAAUC,GACrB5G,EAAG4G,QAAUA,GAEjBO,aACKC,KAAM,eAAgBC,YAAa,gBAAiBC,MAAO,MAC3DF,KAAM,UAAWC,YAAa,UAAWC,MAAO,MAChDF,KAAM,OAAQC,YAAa,OAAQC,MAAO,MAC1CF,KAAM,YAAaC,YAAa,QAASC,MAAO,KAChDF,KAAM,WAAYC,YAAa,UAAWC,MAAO,MACjDF,KAAM,aAAcC,YAAa,MAAOC,MAAO,KAC/CF,KAAM,WAAYC,YAAa,WAAYC,MAAO,KAClDF,KAAM,cAAeC,YAAa,cAAeC,MAAO,KACxDF,KAAM,UAAWC,YAAa,UAAWC,MAAO,MAGzDtH,EAAG4T,mBAAqB,WACpBA,EAAmB5T,EAAG6T,gBAE1B7T,EAAG8T,qBAAuB,WACtB,GAA0B,OAAtB9T,EAAG+T,gBACH/T,EAAGgU,SAAWhU,EAAGiU,gBAChB,CACD,GAAIC,GAAgBlU,EAAGiU,YAAYE,OAAO,SAAUC,GAChD,MAAOA,GAAIf,SAAWrT,EAAG+T,iBAE7B/T,GAAGgU,SAAWE,IAGtBrU,EAASyK,YAAY5I,KAAK,SAAUI,GAChC9B,EAAG0R,OAAS5P,EAAStB,MAEzB,IAAIoT,GAAqB,SAAUS,GAC/BxU,EAASyU,gBAAgBD,GAAS3S,KAAK,SAAUI,GAC7C9B,EAAGgU,SAAWlS,EAAStB,KAAK+T,MAC5BvU,EAAGiU,YAAcnS,EAAStB,KAAK+T,MAC/BvU,EAAGwU,SAAW1S,EAAStB,KAAKiU,SAC5BzU,EAAGwU,SAAS/Q,KAAK,OACjBzD,EAAG+T,gBAAkB,MACrB/T,EAAG2T,eAAgB,IAG3B3T,GAAG0U,SAAW,WACV,GAAInD,GAAQ1C,EAAQ,QAAQ7O,EAAGoR,UAAW,cAC1CI,EAAM3C,EAAQ,QAAQ7O,EAAGqR,QAAS,aAClCxR,GAASmV,2BAA2BhV,EAAG6T,cAAetC,EAAOC,EAAKxR,EAAG+T,gBAAiB/T,EAAG4U,iBAAmB5U,EAAG4U,kBAAmB,GAAOlT,KAAK,SAAUI,GAChJA,EAAStB,KAAK0J,OAAS,GACvBlK,EAAGsG,YAAY9F,KAAOsB,EAAStB,KAC/BR,EAAGmQ,UAAW,EACdnQ,EAAGoQ,aAAc,IAGjBpQ,EAAGmQ,UAAW,EACdnQ,EAAGoQ,aAAc,GAErBzQ,EAAKoC,MAAMD,IACZ,SAAUA,GACTnC,EAAKoC,MAAMD,MAjEvBiT,EAA2B3R,SAAW,eAAgB,OAAQ,WAAY,YAAa,UAAW,WApBlGS,QACGC,OAAO,SACPsB,WAAW,6BAA8B2P,MAyFhD,WACI,YAKA,SAASE,GAAqBtV,EAAMC,EAAWC,EAAUE,GACrD,GAAIC,GAAKC,IACTD,GAAGkV,YAAcrV,EAASsV,IAC1BnV,EAAG8F,eACH9F,EAAGoV,aAAc,EACjBpV,EAAGQ,QACHR,EAAGqV,SAAW,KAEdxV,EAASyK,YAAY5I,KAAK,SAAUI,GAChC9B,EAAG0R,OAAS5P,EAAStB,MACtB,SAAUsB,GACTnC,EAAKoC,MAAMD,KAEf9B,EAAGsV,cAAgB,WACf,GAAIC,GAAgB,CACpBC,SAAQlR,IAAItE,EAAGQ,KACf,KAAI,GAAIiV,GAAE,EAAGA,EAAIzV,EAAGQ,KAAK0J,OAAQuL,IAC7BF,GAAgC,EAChC1V,EAAS6V,cAAc1V,EAAGQ,KAAKiV,GAAG9Q,GAAI4Q,GAAe7T,KAAK,SAAUI,GAChE0T,QAAQlR,IAAIxC,IACb,SAAUA,GAET,MADAnC,GAAKoC,MAAMD,GACJ/B,EAAagC,OAAQH,QAAS,4DAEtC5B,EAAGQ,KAAK0J,SAAWqL,GAClBxV,EAAa4B,SAAUC,QAAS,sCAI5C5B,EAAGuH,eAAiB,WAChB3H,EAAUoC,KAAK,qBAEnBhC,EAAG0U,SAAW,WACV7U,EAASyU,gBAAgBtU,EAAG6T,eAAenS,KAAK,SAAUI,GACtD9B,EAAGQ,KAAOsB,EAAStB,KAAK+T,MACxBvU,EAAG2V,iBAAkB,EACrB3V,EAAG4V,oBAAqB,EACxB5V,EAAGiU,YAAcnS,EAAStB,KAAK+T,MAC/BvU,EAAGwU,SAAW1S,EAAStB,KAAKiU,SAC5BzU,EAAGwU,SAAS/Q,KAAK,OACjBzD,EAAG+T,gBAAkB,OACtB,SAAUjS,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,OAAQH,QAASE,EAASQ,gBAG/CtC,EAAG6V,kBAAoB,WACQ,QAAvB7V,EAAG+T,gBACH/T,EAAGsG,YAAY9F,KAAOR,EAAGiU,YAGzBjU,EAAGsG,YAAY9F,KAAOR,EAAGiU,YAAYE,OAAO,SAAUC,GAClD,MAAOA,GAAIf,UAAYrT,EAAG+T,mBAnC1CkB,EAAqB7R,SAAW,OAAQ,YAAa,WAAY,gBArBjES,QACKC,OAAO,SACPsB,WAAW,uBAAwB6P,MA8D5C,WACI,YAOA,SAASa,GAA+BnW,EAAMG,EAAcD,EAAUE,GAClE,GAAIC,GAAKC,IACTD,GAAG+V,eAAgB,EACnB/V,EAAGgW,eAAgB,EACnBhW,EAAGiW,uBAEHjW,EAAGsG,aACCI,0BAAyB,EACzBF,wBAAyB,EACzB0H,iBAAiB,EACjB/G,aAEQC,KAAM,YAAaC,YAAa,aAAcC,MAAO,MAAO4O,gBAAgB,EAC5E5K,aAAc,iIAGdlE,KAAM,aAAcC,YAAa,cAAeC,MAAO,MAAO4O,gBAAgB,EAC9E5K,aAAc,kIAGdlE,KAAM,aAAcC,YAAa,SAAUC,MAAO,MAAO4O,gBAAgB,IAGzE9O,KAAM,kBAAmBC,YAAa,mBAAoBC,MAAO,MAAO4O,gBAAgB,IAGhGvP,cAAe,SAAUC,GACrB5G,EAAG4G,QAAUA,IAIrB5G,EAAGsK,UAAY,WACXzK,EAASyK,YAAY5I,KAAK,SAAUI,GAChC9B,EAAGmW,UAAYrU,EAAStB,MACzB,SAAUsB,GACTnC,EAAKoC,MAAMD,MAInB9B,EAAGoW,cAAgB,WACfvW,EAASuW,gBAAgB1U,KAAK,SAAUI,GACpC9B,EAAGqW,OAASvU,EAAStB,MACtB,SAAUsB,GACTnC,EAAKoC,MAAMD,MAInB9B,EAAGsW,sBAAwB,WACvBzW,EAAS0W,2BAA2BvW,EAAGiW,qBAAqBvU,KAAK,WAC7D3B,EAAa4B,SAAUC,QAAS,mBACjC,SAAUE,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,OAAQH,QAAS,sBAItC5B,EAAGwW,oBAAsB,WACrBxW,EAAG+V,eAAgB,EACnB/V,EAAGgW,eAAgB,EACnBhW,EAAGsG,YAAY9F,QACfR,EAAGiW,uBACHjW,EAAGmW,aACHnW,EAAGqW,UACHrW,EAAGyW,MAAQ,GACXzW,EAAGU,SAAW,GACdV,EAAGoW,gBACHpW,EAAGsK,aAGPtK,EAAG0W,wBAA0B,SAAS1P,GAClC,GAAI2P,GAAY3W,EAAGiW,oBAAoBW,UAAU,SAASC,GAAG,MAAOA,GAAElS,KAAOqC,EAAIrC,IACjF,IAAiB,KAAdgS,EAAiB,CAChB,GAAIG,GAAa9W,EAAG+W,uBAAuB/P,EAC3ChH,GAAGiW,oBAAoBxS,KAAKqT,OAE3B9W,GAAGiW,oBAAoBzJ,OAAOmK,EAAU,EAAG3P,IAGpDhH,EAAG+W,uBAAyB,SAAUC,GAClC,OACIC,OAAQD,EAAMC,OACdC,QAASpW,SAASd,EAAGkX,SACrBC,UAAWH,EAAMG,UACjBC,WAAYJ,EAAMI,aAI1BpX,EAAGsU,gBAAkB,WACjBzU,EAASwX,2BAA2BrX,EAAGkX,QAAQlX,EAAGU,UAAUgB,KAAK,SAAUI,GACvE9B,EAAG+V,eAAgB,EACnB/V,EAAGsG,YAAY9F,KAAOsB,EAAStB,MAChC,SAAUsB,GACTnC,EAAKoC,MAAMD,MAInB9B,EAAGsX,cAAgB,WACftX,EAAGkX,QAAUlX,EAAGyW,MAChBzW,EAAGgW,eAAgB,GAGvBhW,EAAGsK,YACHtK,EAAGoW,gBAtFPN,EAA+B1S,SAAW,OAAQ,eAAgB,WAAY,gBAtB9ES,QACGC,OAAO,SACPsB,WAAW,iCAAkC0Q,MA6GpD,WACI,YAOA,SAASyB,GAAyB5X,EAAMC,EAAWE,EAAcD,EAAU2X,EAAWzX,EAAc8O,EAASrM,EAASsM,EAAQ2I,GAC1H,GAAIzX,GAAKC,IACTD,GAAG0X,UACH1X,EAAG2X,eAAgB,EACnB3X,EAAG4X,OAAS9X,EAAa8X,OAAS9X,EAAa8X,OAAS,EACxD5X,EAAGG,WAA0B,IAAbH,EAAG4X,QAA6BxX,QAAbJ,EAAG4X,OACtC5X,EAAGK,UAAYL,EAAGG,WAAa,OAAS,SACxCH,EAAGM,QAAUN,EAAGG,WAAa,OAAS,aACtCH,EAAGkV,YAAcrV,EAASsV,IAC1BnV,EAAG6X,SAAW,GACd7X,EAAG8X,WAAY,EACf9X,EAAG+X,YAAa,EAChB/X,EAAGgY,oBAAqB,EACxBhY,EAAGiY,cAAe,EAElBjY,EAAGsG,aACC4R,kBAAiB,EACjB/Q,aAEQC,KAAM,YAAaC,YAAa,QAASC,MAAO,MAAO4O,gBAAgB,IAGvE9O,KAAM,YAAaC,YAAa,aAAcC,MAAO,MAAO4O,gBAAgB,EAC5E5K,aAAc,6DAGdlE,KAAM,aAAcC,YAAa,cAAeC,MAAO,MAAO4O,gBAAgB,EAC9E5K,aAAc,8DAGtB3E,cAAe,SAAUC,GACrB5G,EAAG4G,QAAUA,IAIrB5G,EAAGmY,YAAc,SAAU1C,GACvB9V,EAAK2E,IAAImR,GACTzV,EAAGsG,YAAY9F,KAAKgM,OAAOiJ,EAAG,IAG9BzV,EAAGG,YACHN,EAASoG,QAAQjG,EAAG4X,QAAQlW,KAAK,SAAUI,GACvC9B,EAAGoY,WAAatW,EAAStB,KAAK4X,WAC9BpY,EAAGqY,WAAavW,EAAStB,KAAK6X,WAC9BrY,EAAGqT,QAAUvR,EAAStB,KAAK6S,QAC3BrT,EAAGW,YAAcmB,EAAStB,KAAKG,YAC/BX,EAAGsY,aAAexW,EAAStB,KAAK8X,aAChCtY,EAAGuY,UAAYzW,EAAStB,KAAK+X,UAC7BvY,EAAGwY,MAAQ1W,EAAStB,KAAKgY,MACzBxY,EAAGyY,QAAU3W,EAAStB,KAAKiY,QAC3BzY,EAAG0Y,SAAW5W,EAAStB,KAAKkY,SAC5B1Y,EAAG2Y,UAAY7W,EAAStB,KAAKmY,UAC7B3Y,EAAG4Y,OAAS9W,EAAStB,KAAKoY,OAC1B5Y,EAAGoB,QAAUU,EAAStB,KAAKY,QAC3BpB,EAAGsB,UAAyC,IAA7BQ,EAAStB,KAAKqY,WAAmB,KAAO/W,EAAStB,KAAKqY,WACrE7Y,EAAG8Y,QAAUjK,EAAQ,QAAQ,GAAImC,MAAKlP,EAAStB,KAAKuY,WAAY,eACjE,SAAUjX,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,OAAQH,QAASE,EAASQ,eAI/CzC,EAASmZ,mBAAmBhZ,EAAG4X,QAAQlW,KAAK,SAAUI,GAC9CA,EAAStB,KAAK0J,OAAS,EACvBlK,EAAGiY,cAAe,GAGlBjY,EAAGsG,YAAY9F,QACfqD,QAAQgM,QAAQ/N,EAAStB,KAAM,SAAUyY,GACrCjZ,EAAGsG,YAAY9F,KAAKyY,EAAK/B,SAAW+B,MAG7C,SAAUnX,GACTnC,EAAKoC,MAAMD,KAGfjC,EAASyK,YAAY5I,KAAK,SAAUI,GAChC9B,EAAGmW,UAAYrU,EAAStB,MACzB,SAAUsB,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,OAAQH,QAASE,EAASQ,eAG3CzC,EAASqC,eAAeR,KAAK,SAAUI,GACnC9B,EAAGmC,UAAYL,EAAStB,MACzB,SAAUsB,GACTnC,EAAKoC,MAAMD,KAGfjC,EAASuW,gBAAgB1U,KAAK,SAAUI,GACpC9B,EAAG0X,OAAS5V,EAAStB,MACtB,SAAUsB,GACTnC,EAAKoC,MAAMD,KAGf9B,EAAGkZ,OAAS,WACR,GAAI1Y,IACA4X,WAAYtX,SAASd,EAAGoY,YAActX,SAASd,EAAGoY,YAAc,EAChEC,WAAYrY,EAAGqY,WACfhF,QAASrT,EAAGqT,QACZ1S,YAAaX,EAAGW,YAChB2X,aAActY,EAAGsY,aACjBC,UAAW,EACXC,MAAO,EACPC,QAASzY,EAAGyY,SAAU,GAAO,EAC7BC,SAAU,MACVC,UAAW,IACXC,OAAQ5Y,EAAG4Y,OACXC,WAAY7Y,EAAGsB,UACf6X,MAAOnZ,EAAGmZ,MACVC,OAAQpZ,EAAG6X,UAEftW,EAAUvB,EAAGG,WAAaN,EAASwZ,WAAWrZ,EAAG4X,OAAQpX,GAAQX,EAASyZ,WAAW9Y,EACrFe,GAAQG,KAAK,WACT3B,EAAa4B,SAAUC,QAAS,sBAChC5B,EAAG6B,UACJ,SAAUC,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,OAAQH,QAAS,uBAItC,IAAI2X,GAAuB,SAAUC,EAAeC,GAChD,GAAIC,IAAS,CAOb,OANA7V,SAAQgM,QAAQ2J,EAAe,SAAUG,GAClCA,EAAKzC,UAAYuC,EAAQvC,UAExBwC,GAAS,KAGVA,EAGX1Z,GAAG4Z,sBAAwB,WACvB,GAAIC,KAuCJ,OAtCAha,GAASmZ,mBAAmBhZ,EAAG4X,QAAQlW,KAAK,SAAUI,GAClD,GAAI0X,GAAgB1X,EAAStB,KACzBsZ,KACAC,KACAC,IACJra,GAAK2E,IAAIkV,GACLxZ,EAAGiY,aACHpU,QAAQgM,QAAQ7P,EAAGsG,YAAY9F,KAAM,SAAUmZ,GACvCA,EAAKvC,cAAe,GAASuC,EAAKxC,aAAc,EAChD2C,EAAYrW,KAAKkW,GAEZJ,EAAqBC,EAAeG,GACzCI,EAAYtW,KAAKkW,GAGjBK,EAASvW,KAAKkW,KAKtBG,EAAcN,EAElB7Z,EAAK2E,IAAIwV,GACTna,EAAK2E,IAAIyV,GACTpa,EAAK2E,IAAI0V,GACTnW,QAAQgM,QAAQiK,EAAa,SAAUH,GACnCE,EAASpW,KAAK5D,EAASoa,qBAAqBN,EAAKzC,QAASyC,EAAK1C,WAEnEpT,QAAQgM,QAAQkK,EAAa,SAAUJ,GACnCE,EAASpW,KAAK5D,EAASqa,qBAAqBP,MAEhD9V,QAAQgM,QAAQmK,EAAU,SAAUL,SACzBA,GAAKhV,GACZkV,EAASpW,KAAK5D,EAASsa,kBAAkBR,OAE9C,SAAU7X,GACTnC,EAAKoC,MAAMD,KAER2V,EAAG2C,IAAIP,IAElB7Z,EAAGqa,SAAW,WACV,GAAI7Z,IACAyW,OAAQjX,EAAG4X,OACX0C,gBAAiBta,EAAGW,YACpBuW,QAASlX,EAAGua,cAAc5V,GAC1B6V,UAAWxa,EAAGua,cAAc3O,KAC5BuL,UAAWnX,EAAGmX,WAAY,GAAO,EACjCC,WAAYpX,EAAGoX,YAAa,GAAO,EAEvCpX,GAAGsG,YAAY9F,KAAKR,EAAGua,cAAc5V,IAAMnE,GAE/CR,EAAGya,eAAiB,WAChBza,EAAG0a,iBAAmBlY,EAAQ6L,SAASuE,eAAe,WACtD,IAA8C+H,GAA1CC,EAAY5a,EAAG0a,iBAAiBG,MAAM,GACtCC,EAAS,GAAIC,WAEjB,OAAiB3a,SAAbwa,GACAE,EAAOE,UAAY,SAAUnW,GACzB8V,EAAQ,GAAIM,YAAWpW,EAAEqW,OAAOC,QAChCnb,EAAG6X,SAAWL,EAAU4D,aAAaT,GACrC3a,EAAGqb,YAAYT,IAEnBE,EAAOQ,kBAAkBV,GACzB5a,EAAGgY,oBAAqB,MACxBjY,GAAa4B,SAAUC,QAAS,6BAGpC7B,GAAagC,OAAQH,QAAS,4BAElC5B,EAAGqb,YAAc,SAAUE,GACvBvb,EAAGwb,UAAYhZ,EAAQ6L,SAASuE,eAAe,YAC/C,IAAIkI,GAAS,GAAIC,WACjBD,GAAOE,UAAY,SAAUnW,GACzB7E,EAAGwb,UAAUC,IAAM5W,EAAEqW,OAAOC,QAEhCL,EAAOY,cAAcH,IAEzBvb,EAAG2b,UAAY,SAAUC,GACrB5b,EAAG4Z,wBAAwBlY,KAAK,SAAUma,GACtClc,EAAK2E,IAAIuX,GACT9b,EAAa4B,SAAUC,QAAS,wBAC5Bga,GACA5b,EAAG6B,UAER,SAAUga,GACTlc,EAAKoC,MAAM8Z,GACX9b,EAAagC,OAAQH,QAAS,+BAGtC5B,EAAG8b,UAAY,WACX9b,EAAG8X,WAAa9X,EAAG8X,WAEvB9X,EAAG+b,eAAgB,WACf/b,EAAG2X,eAAiB3X,EAAG2X,eAE3B3X,EAAG6B,OAAS,WACRjC,EAAUoC,KAAK,iBAtNvBuV,EAAyBnU,SAAW,OAAQ,YAAa,eAAgB,WAAY,YAAa,eAAgB,UAAW,UAAW,SAAU,MAvBlJS,QACGC,OAAO,SACPsB,WAAW,2BAA4BmS,MA+O9C,WACI,YAKA,SAASyE,GAA0Brc,EAAME,EAAUC,EAAcF,EAAWG,GACxE,GAAIC,GAAKC,IAMT,IALAD,EAAGic,QAAUnc,EAAamH,GAC1BjH,EAAGG,WAA2B,IAAdH,EAAGic,SAA+B7b,QAAdJ,EAAGic,QACvCjc,EAAGK,UAAYL,EAAGG,WAAa,OAAS,SACxCH,EAAGM,QAAUN,EAAGG,WAAa,OAAS,aAElCH,EAAGG,WAAY,CACf,GAAI+b,GAAMrc,EAASsc,aAAanc,EAAGic,QACnCC,GAAIxa,KAAK,SAAU+U,GACfzW,EAAG4L,KAAO6K,EAAM7K,MACjB,SAAU9J,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,OAAQH,QAASE,EAASQ,eAG/CtC,EAAGO,gBAAkB,WACjB,GAAIC,IACAoL,KAAM5L,EAAG4L,MAEbrK,EAAUvB,EAAGG,WAAaN,EAASuc,YAAYpc,EAAGic,QAAQzb,GAAQX,EAASwc,YAAY7b,EACvFe,GAAQG,KAAK,WACT3B,EAAa4B,SAAUC,QAAS,uBAChC5B,EAAG6B,UACJ,SAAUC,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,OAAQH,QAAS,8BAGtC5B,EAAG6B,OAAS,WACRjC,EAAUoC,KAAK,kBAVvBga,EAA0B5Y,SAAW,OAAQ,WAAY,eAAgB,YAAa,gBAxBtFS,QACGC,OAAO,SACPsB,WAAW,4BAA6B4W,MAsC/C,WACI,YAUA,SAASM,GAAsB3c,EAAME,EAAUD,GAC3C,GAAII,GAAKC,IACTD,GAAGM,QAAU,gBACbN,EAAGsG,eACHtG,EAAG6F,aAAc,EACjB7F,EAAG8F,eAEH9F,EAAGsG,YAAYC,aAAc,EAC7BvG,EAAGsG,YAAYE,wBAAyB,EACxCxG,EAAGsG,YAAYG,cAAgBzG,EAAG8F,YAClC9F,EAAGsG,YAAYI,0BAA2B,EAE1C1G,EAAGsG,YAAYK,cAAgB,SAAUC,GACrC5G,EAAG4G,QAAUA,EACb5G,EAAG4G,QAAQC,UAAUC,GAAGC,oBAAoB,KAAM,SAAUC,GACxD,GAAIC,GAAKD,EAAIE,OAAOvC,EACpB/E,GAAUoC,KAAK,oBAAsBiF,MAI7CjH,EAAGsG,YAAYa,aAEVC,KAAM,OACNC,YAAa,OACbiE,aAAc,mDAGnBtL,EAAGuH,eAAiB,WAChB3H,EAAUoC,KAAK,qBAEnBnC,EAAS0c,YAAY7a,KAAK,SAAUI,GACjC9B,EAAGsG,YAAY9F,KAAOsB,EAAStB,MAChC,SAAUsB,GACTnC,EAAKoC,MAAMD,KAjBlBwa,EAAsBlZ,SAAW,OAAQ,WAAY,aAzBrDS,QACGC,OAAO,SACPsB,WAAW,wBAAyBkX,GACpCnI,OAAO,WAAA,OAAW,SAAUqI,GAC3B,MAAO,UAAU5K,GACb,MAAO4K,GAAKC,YAAY7K,UA4CpC,WACI,YAOA,SAAS8K,KAYL,QAASC,KACL,GAAI3c,GAAKC,IACTD,GAAG4c,UAAahL,MAAO,OAAQiL,MAAO,SACtBjL,MAAO,MAAOiL,MAAO,QACrBjL,MAAO,MAAOiL,MAAO,QACrBjL,MAAO,MAAOiL,MAAO,QACrBjL,MAAO,MAAOiL,MAAO,QAjBzC,GAAItR,IACAuR,SAAU,IACVC,YAAa,iDACb3X,WAAYuX,EACZK,aAAc,KACdC,kBAAkB,EAGtB,OAAO1R,GAdX1H,QACGC,OAAO,SACPyH,UAAU,eAAgBmR,MA0BjC,WACI,YAOA,SAASQ,KAYL,QAASC,GAAiBrO,EAAQtM,EAAS3C,EAAUmE,EAAYpE,EAAUD,GACvE,GAAIK,GAAKC,IACTD,GAAGod,UAAY,EACfpd,EAAGqd,YAAcrZ,EAAWsZ,UAAUC,KACtCvd,EAAGwd,WAAa,GAChBxd,EAAGyd,gBAAiB,EACpB3O,EAAO4O,IAAI,eAAgB,SAAUC,EAAOC,GACxCje,EAAK2E,IAAIsZ,GACTje,EAAK2E,IAAIqZ,GACY,IAAjBC,EAAKC,QACL7d,EAAGod,UAAY,EAEfpd,EAAGod,UAAYpd,EAAGod,UAAYQ,EAAKC,QACvC7d,EAAGqd,YAAcrZ,EAAWsZ,UAAUC,OAG1CzO,EAAO4O,IAAI,YAAa,SAAUC,EAAOC,GAClB,KAAfA,EAAKpZ,MACLxE,EAAG8d,uBAGH9d,EAAGwd,WAAaI,EAAKpZ,MACrBR,EAAWsZ,UAAUC,KAAKQ,eAAiBH,EAAKlZ,OAChDV,EAAWsZ,UAAUC,KAAKS,kBAAoBJ,EAAKpZ,MACnDR,EAAWsZ,UAAUC,KAAKU,gBAAiB,KAInDje,EAAG8d,oBAAsB,WACrB9d,EAAGwd,WAAa,GAChBxZ,EAAWsZ,UAAUC,KAAKQ,eAAiB,EAC3C/Z,EAAWsZ,UAAUC,KAAKS,kBAAoB,EAC9Cha,EAAWsZ,UAAUC,KAAKU,gBAAiB,EAC3Cre,EAAUoC,KAAK,QAEnBhC,EAAGke,OAAS,WACR1b,EAAQ2b,QAAQC,QAEpBpe,EAAGqe,OAAS,WACRxe,EAASye,UAETta,EAAWsZ,UAAUiB,iBACrB1e,EAAS2e,UAAU9c,KAAK,SAAUI,GAC9B9B,EAAGod,UAAYtb,EAAStB,KAAK+T,MAAMrK,OACnClG,EAAWsZ,UAAUmB,KAAO3c,EAAStB,OA7BjD2c,EAAiB/Z,SAAW,SAAU,UAAW,WAAY,aAAc,YAAa,OA1BxF,IAAImI,IACAuR,SAAU,IACVC,YAAa,oCACb3X,WAAY+X,EACZH,aAAc,MACdC,kBAAkB,EAGtB,OAAO1R,GAdX1H,QACGC,OAAO,SACPyH,UAAU,aAAc2R,MAmE/B,WACI,YAKA,SAASwB,GAAmB5e,EAAcH,EAAME,EAAUmE,EAAYpE,EAAWG,GAC7E,GACI4e,GADA3e,EAAKC,KAEL2e,EAAU5a,EAAWsZ,UAAUC,KAAKsB,gBACpCC,EAAkB,SAAUhd,GACxB9B,EAAG0R,OAAS5P,EAAStB,IACrB,IAAI0T,GAAgBlU,EAAG0R,OAAOyC,OAAO,SAAUC,GAC3C,MAAOA,GAAIzP,GAAGwN,YAAcrS,EAAauU,SAE7C,OAAIH,GAAchK,OAAS,GACvBlK,EAAGiE,WAAY,OACfjE,EAAG+e,0BAA2B,KAGtC/e,EAAG6T,cAAgBK,EAAc,GAAKA,EAAc,GAAGvP,GAAGwN,WAAanS,EAAG0R,OAAO,GAAG/M,GAAGwN,WACvFnS,EAAGgf,WAAa,cAChBrf,EAAKsf,MAAM,qBAAsBjb,EAAWsZ,UAAUC,MAClDqB,GACAjf,EAAKsf,MAAM,qCAAsCL,GAC1C/e,EAASyU,gBAAgBxU,EAAauU,WAG7C1U,EAAKsf,MAAM,0CAA2CL,GAC/C/e,EAASqf,uBAAuBpf,EAAauU,YAG5D8K,EAA0B,SAAUrd,GAC5B9B,EAAG+e,2BAGP/e,EAAGgU,SAAWlS,EAAStB,KAAK+T,MAC5BvU,EAAGiU,YAAcnS,EAAStB,KAAK+T,MAC/BvU,EAAGwU,SAAW1S,EAAStB,KAAKiU,SAC5BzU,EAAGwU,SAAS/Q,KAAK,OACjBzD,EAAG+T,gBAAkB,MACrB/T,EAAGiE,WAAY,IAEfmb,EAAa,SAAUtd,GACnBA,EAAStB,OAASme,EAAYU,WAC9Brb,EAAWO,WAAW,gBAAkBsZ,QAAS,IACjD9d,EAAa4B,SAAUC,QAAS,iBAChC+c,EAAYU,UAAW,IAG3BC,EAAc,WACdvf,EAAagC,OAAQH,QAAS,0BAElC5B,GAAG+e,0BAA2B,EAC9B/e,EAAGiE,WAAY,EACfjE,EAAGuf,UAAW,EACdvf,EAAGkV,YAAcrV,EAASsV,IAC1BnV,EAAGwf,iBAAmB,SAAUvG,GAC5B0F,EAAc1F,EACdpZ,EAAS4f,cAAcxG,EAAKtU,GAAGsU,EAAKyG,UAC/Bhe,KAAK0d,EAAYE,IAE1Btf,EAAG4T,mBAAqB,WACpBhU,EAAUoC,KAAK,aAAehC,EAAG6T,gBAErC7T,EAAG8T,qBAAuB,WACtB,GAA0B,OAAtB9T,EAAG+T,gBACH/T,EAAGgU,SAAWhU,EAAGiU,gBAChB,CACD,GAAIC,GAAgBlU,EAAGiU,YAAYE,OAAO,SAAUC,GAChD,MAAOA,GAAIf,SAAWrT,EAAG+T,iBAE7B/T,GAAGgU,SAAWE,IAGtBlU,EAAG2f,iBAAmB,SAAUC,EAAMC,EAAGC,GACrC,MAAYA,GAAJD,EAAS,GAAMA,EAAIC,EAAK,EAAI,GAExC9f,EAAG+f,aAAe,SAAUC,GACxBhgB,EAAGgU,SAAWhU,EAAGgU,SAASiM,KAAK,SAAUJ,EAAGC,GACxC,MAAO9f,GAAG2f,iBAAiBK,EAAQH,EAAEG,GAASF,EAAEE,OAGxDhgB,EAAGkgB,aAAe,WACdlgB,EAAGuf,UAAYvf,EAAGuf,SAClBvf,EAAGgU,SAAWhU,EAAGgU,SAASmM,WAE9BngB,EAAGogB,aAAe,SAAU1V,GACxB,GAAI1G,EAAWsZ,UAAUmB,KAErB,IAAK,GADD4B,GAAcrc,EAAWsZ,UAAUmB,KAAKlK,MACnC5J,EAAI,EAAGA,EAAI0V,EAAYnW,OAAQS,IAAK,CACzC,GAAI2V,GAAWD,EAAY1V,GAAG4V,IAC9B,IAAID,EAAS3b,KAAO+F,EAChB,OAAO,EAGnB,OAAO,GAGX7K,EAAS2gB,oBACL9e,KAAKod,GACLpd,KAAKyd,GAxEbT,EAAmBtb,SAAW,eAAgB,OAAQ,WAAY,aAAc,YAAa,gBA3B7FS,QACGC,OAAO,SACPsB,WAAW,qBAAsBsZ,MAsGxC,WACI,YAKA,SAAS+B,GAAe9gB,EAAME,EAAUmE,EAAYjE,GAChD,GAAIC,GAAKC,IACTD,GAAGkV,YAAcrV,EAASsV,IAC1BnV,EAAG0gB,SAAU,EACb7gB,EAAS2e,UAAU9c,KAAK,SAAUI,GAC9B9B,EAAGuU,MAAQzS,EAAStB,KAAK+T,MACzBvQ,EAAWsZ,UAAUmB,KAAO3c,EAAStB,MACtC,SAAUsB,GACTnC,EAAKoC,MAAMD,EAASQ,YACpBtC,EAAG0gB,SAAU,IAEjB1gB,EAAG2gB,WAAa,SAAUhK,GACtB,GAAIsC,GAAOjZ,EAAGuU,MAAMoC,GAAW4J,IAC/B1gB,GAAS+gB,eAAe3H,EAAKtU,IAAIjD,KAAK,SAAUI,GAC5CnC,EAAK2E,IAAIxC,GACLA,EAAStB,QAAS,IAClBR,EAAGuU,MAAM/H,OAAOmK,EAAW,GAC3B3S,EAAWO,WAAW,gBAAkBsZ,QAAS,KACjD9d,EAAa4B,SAAUC,QAAS,oBAErC,SAAUE,GACTnC,EAAKoC,MAAMD,MAGnB9B,EAAG6gB,iBAAmB,WAClBhhB,EAASihB,YAAYpf,KAAK,WACtB,IAAK,GAAIuD,GAAI,EAAGA,EAAIjF,EAAGuU,MAAMrK,OAAQjF,IAAK,CACtC,GAAI8b,GAAO/gB,EAAGuU,MAAMtP,EACpBpF,GAAS4f,cAAcsB,EAAKR,KAAK5b,GAAIoc,EAAKC,UAAUtf,KAAK,aACtD,WACC3B,EAAagC,OAAQH,QAAS,wBAA0Bmf,EAAKR,KAAKlI,iBAG3E,WACCtY,EAAagC,OAAQH,QAAS,mCAV1C6e,EAAerd,SAAW,OAAQ,WAAY,aAAc,gBA5B5DS,QACKC,OAAO,SACPsB,WAAW,iBAAkBqb,MA2CtC,WACI,YAKA,SAASQ,GAAgBjd,EAAYrE,EAAME,EAAUE,GACjD,GAAIC,GAAKC,KACLihB,EAAa,SAAUpf,GACvB9B,EAAG0R,OAAS5P,EAAStB,KAAKyf,KAAK,SAAUJ,EAAGC,GACxC,MAAO9f,GAAGmhB,eAAetB,EAAElf,YAAamf,EAAEnf,eAE9CX,EAAGiE,WAAY,GAEfmd,EAAY,SAAUtf,GACtBnC,EAAKoC,MAAMD,GACX/B,EAAagC,OAAQH,QAASE,EAASQ,aAE3C0B,GAAWyZ,gBAAiB,EAC5Bzd,EAAG0R,UACH1R,EAAGkV,YAAcrV,EAASsV,IAC1BnV,EAAGiE,WAAY,EACftE,EAAKsf,MAAM,uBAAwBjb,EAAWsZ,UAAUC,MACxD5d,EAAKsf,MAAM,kBAAmBjb,EAAWsZ,UAAUC,KAAKsB,iBACpD7a,EAAWsZ,UAAUC,KAAKsB,gBAC1Bhf,EAASyK,YAAY5I,KAAKwf,EAAYE,GAGtCvhB,EAAS2gB,oBAAoB9e,KAAKwf,EAAYE,GAElDphB,EAAGmhB,eAAiB,SAAUtB,EAAGC,GAC7B,MAAYA,GAAJD,EAAS,GAAMA,EAAIC,EAAK,EAAI,GAA5CmB,EAAgB7d,SAAW,aAAc,OAAQ,WAAY,gBA7B7DS,QACGC,OAAO,SACPsB,WAAW,kBAAmB6b,MAmCrC,WACI,YAKA,SAASld,GAA4BnE,EAAWD,EAAME,EAAUmE,GAC5D,GAAIhE,GAAKC,IACTD,GAAGiE,WAAY,CACf,IAAIC,GAAQtE,EAAUuE,QACtBnE,GAAGoE,WAAa,SAAUC,GACtB1E,EAAK2E,IAAID,GACTL,EAAWO,WAAW,aAAeC,MAAOH,EAAKI,MAAOC,OAAQL,EAAKM,KACrE/E,EAAUoC,KAAK,aAEnBnC,EAAS+E,UAAUV,EAAMW,EAAIX,EAAMW,EAAI,GAAIX,EAAMY,EAAIZ,EAAMY,EAAI,GAAIZ,EAAMa,EAAIb,EAAMa,EAAI,GAAIb,EAAMc,EAAId,EAAMc,EAAI,GAAId,EAAMe,EAAIf,EAAMe,EAAI,GAAIf,EAAMgB,GAAI,GAAO,GAC3JxD,KAAK,SAAUI,GACZ9B,EAAGmF,cAAgBrD,EAAStB,KAC5BR,EAAGiE,WAAY,GAChB,SAAUnC,GACTnC,EAAKoC,MAAMD,KAYnBiC,EAA4BX,SAAW,YAAa,OAAQ,WAAY,cA9BxES,QACGC,OAAO,SACPsB,WAAW,8BAA+BrB,MAoBjD,WACI,YAKA,SAASsB,GAAqB1F,EAAMC,GAChC,GAAII,GAAKC,IACTD,GAAGsF,WAAa,WACZ3F,EAAK2E,IAAItE,GACLA,EAAGwE,OACH5E,EAAUuE,OAAO,IAAKnE,EAAGwE,OAEzBxE,EAAGuF,OACH3F,EAAUuE,OAAO,IAAKnE,EAAGuF,OAEzBvF,EAAGwF,WACH5F,EAAUuE,OAAO,IAAKnE,EAAGwF,WAEzBxF,EAAGyF,UACH7F,EAAUuE,OAAO,IAAKnE,EAAGyF,UAEzBzF,EAAG0F,SACH9F,EAAUuE,OAAO,IAAKnE,EAAG0F,SAEzB1F,EAAG2F,aACH/F,EAAUuE,OAAO,KAAK,GAE1BvE,EAAUoC,KAAK,sBAKvBqD,EAAqBjC,SAAW,OAAQ,aA/BxCS,QACGC,OAAO,SACPsB,WAAW,uBAAwBC,MA8B1C,WACI,YAKA,SAASgc,GAAmB1hB,EAAME,EAAUmE,EAAYjE,GACpD,GAAIC,GAAKC,KACLqhB,EAAiBtd,EAAWsZ,UAAUC,KAAKU,cAC/Cje,GAAG4H,OAAS0Z,EAAiBtd,EAAWsZ,UAAUC,KAAKQ,eAAiB/Z,EAAWsZ,UAAUC,KAAKzV,OAClG9H,EAAGuhB,YAAcD,EAAiBtd,EAAWsZ,UAAUC,KAAKS,kBAAoBha,EAAWsZ,UAAUC,KAAK9Y,MAC1GzE,EAAGwhB,OAAU5P,MAAO,gBAAiBiL,MAAO,kBAAqBjL,MAAO,QAASiL,MAAO,UACxF7c,EAAGgJ,cAAiB4I,MAAO,EAAGiL,MAAO,gBAAmBjL,MAAO,EAAGiL,MAAO,aACzE7c,EAAGkL,aACHlL,EAAGyhB,aACHzhB,EAAGoL,UACHpL,EAAG0hB,YAAc,WACb1hB,EAAG2hB,gBAAgBnZ,UAA2C,MAA/BxI,EAAG2hB,gBAAgBtX,QAAkBrK,EAAG2hB,gBAAgBnZ,UAAY,GACnGxI,EAAG2hB,gBAAgBjZ,WAA4C,MAA/B1I,EAAG2hB,gBAAgBtX,QAAkBrK,EAAG2hB,gBAAgBjZ,WAAa,EACrG,IAAInH,GAAoC,IAA1BvB,EAAG2hB,gBAAgBhd,GAAW9E,EAAS+hB,cAAc5hB,EAAG2hB,gBAAiB3hB,EAAG4H,QAAU/H,EAASgiB,cAAc7hB,EAAG2hB,gBAAiB3hB,EAAG2hB,gBAAgBhd,GAClKpD,GAAQG,KAAK,SAAUI,GACnB,GAAIggB,GAAsC,IAA1B9hB,EAAG2hB,gBAAgBhd,GAAW7C,EAAStB,KAAOR,EAAG2hB,gBAAgBhd,EACjFod,GAAUD,KAGlB,IAAIC,GAAY,SAAUD,GACtBniB,EAAK2E,IAAIN,EAAWsZ,UAAUC,KAC9B,IAAIyE,IACAC,WAAYjiB,EAAG2hB,gBAAgBO,SAC/BC,SAA6B,UAAnBniB,EAAGoiB,YAA0BpiB,EAAGqiB,iBAAmBriB,EAAGoiB,YAChEE,gBAAiBtiB,EAAGsiB,gBACpBC,gBAAiBviB,EAAGuiB,gBACpB3J,OAAQ,KAERrX,EAAU+f,EAAiBzhB,EAAS2iB,cAAcV,EAAWE,EAAahiB,EAAG4H,QAAU/H,EAAS4iB,WAAWX,EAAWE,EAC1HzgB,GAAQG,KAAK,SAAUI,GACfA,GAA6B,GAAjBA,EAAStB,MACrBwD,EAAWO,WAAW,gBAAkBsZ,QAAS,IACjD7Z,EAAWO,WAAW,aAAeC,MAAO,KAC5CzE,EAAa4B,SAAUC,QAAS,qBAGhC7B,EAAagC,OAAQH,QAAS,4BAEnC,SAAUE,GACTnC,EAAKoC,MAAMD,GACX/B,EAAagC,OAAQH,QAAS,8BAGlC8gB,EAAiB,WACjB,GAAInhB,GAAwB,IAAdvB,EAAG4H,OAAe/H,EAAS8iB,mBAAmB3iB,EAAG4H,QAAU/H,EAAS+iB,cAClFrhB,GAAQG,KAAK,SAAUI,GACnB9B,EAAG6iB,UAAY/gB,EAAStB,KACxBR,EAAG6iB,UAAUpf,MAAOkB,GAAI,EAAGme,MAAO,0BAA2Bhb,OAAQ9H,EAAG0E,OAAQD,MAAOzE,EAAGuhB,cAC1FvhB,EAAG6iB,UAAY7iB,EAAG6iB,UAAU5C,KAAK,SAAUJ,EAAGC,GAC1C,MAAO9f,GAAG+iB,WAAWlD,EAAElb,GAAImb,EAAEnb,MAEjC3E,EAAG2hB,gBAAkB3hB,EAAG6iB,UAAU,GAClC7iB,EAAG2hB,gBAAgBtX,QACiB,KAA/BrK,EAAG2hB,gBAAgBtX,SAAkBrK,EAAG2hB,gBAAgBtX,UAAYxG,QAAQzD,UAC3E,IAAMJ,EAAG2hB,gBAAgBtX,QAC/BrK,EAAG2hB,gBAAgBld,MAAQzE,EAAGuhB,YAC9BvhB,EAAGoiB,YAAcpiB,EAAGwhB,KAAK,GAAG5P,QAGpC5R,GAAG+iB,WAAa,SAAUlD,EAAGC,GACzB,MAAYA,GAAJD,EAAS,GAAMA,EAAIC,EAAK,EAAI,GAExCjgB,EAASoL,gBAAgBvJ,KAAK,SAAUI,GACpC9B,EAAGkL,UAAYpJ,EAAStB,OAE5BX,EAASmjB,gBAAgBthB,KAAK,SAAUI,GACpC9B,EAAGyhB,UAAY3f,EAAStB,OAE5BX,EAASsL,eAAezJ,KAAK,SAAUI,GACnC9B,EAAGoL,OAAStJ,EAAStB,KACrBkiB,MA1CRrB,EAAmBje,SAAW,OAAQ,WAAY,aAAc,gBAhChES,QACGC,OAAO,SACPsB,WAAW,qBAAsBic,MA8ExC,WACI,YAKA,SAAS4B,GAAoBtjB,EAAME,EAAUC,EAAcC,EAAcmjB,EAAQtjB,EAAWkP,GACxF,GAAI9O,GAAKC,IACTD,GAAGmjB,QAAU,KACbnjB,EAAGkV,YAAcrV,EAASsV,IAC1BnV,EAAGojB,iBAAkB,EACrBpjB,EAAGqjB,gBAAiB,EACpBrjB,EAAGsjB,kBAAmB,EACtBtjB,EAAGujB,oBACCC,UAAW,IACXjd,aAAa,EACbY,aACOC,KAAM,cAAeC,YAAa,KAAMC,MAAO,KAC/CF,KAAM,OAAQC,YAAa,SAAUC,MAAO,KAC5CF,KAAM,MAAOC,YAAa,MAAOC,MAAO,MACxCF,KAAM,cAAeC,YAAa,gBAClCD,KAAM,YAAaC,YAAa,YAAaiE,aAAc,6GAC3DlE,KAAM,UAAWC,YAAa,YAE5BD,KAAM,WACNC,YAAa,WACbiE,aAAc,qDAEvB3E,cAAe,SAAUC,GACrB5G,EAAGyjB,UAAY7c,EACfA,EAAQC,UAAUC,GAAGC,oBAAoB+H,EAAQ9O,EAAG0jB,gBAG5D1jB,EAAGsG,aACCC,aAAa,EACbod,oBAAoB,EACpBH,UAAW,IACXrc,aACOC,KAAM,KAAMC,YAAa,KAAMC,MAAO,KACtCF,KAAM,aAAcC,YAAa,SAAUC,MAAO,KAClDF,KAAM,WAAYC,YAAa,MAAOC,MAAO,MAC7CF,KAAM,cAAeC,YAAa,gBAEhCD,KAAM,UACNC,YAAa,QACbiE,aAAc,wCAA0CtL,EAAGkV,YAC7C,0DAGvBvO,cAAe,SAAUC,GACrB5G,EAAG4jB,MAAQhd,IAGnB5G,EAAG6jB,eAAiB,WAChB,GAAIpd,GAAgBzG,EAAG4jB,MAAM/c,UAAUid,iBACV,KAAzBrd,EAAcyD,OACd6Z,MAAM,gCAENC,EAAkBvd,GAClBwd,EAAkBxd,KAG1BzG,EAAGkkB,mBAAqB,WACpB,GAAIzd,GAAgBzG,EAAGyjB,UAAU5c,UAAUid,iBACd,KAAzBrd,EAAcyD,OACd6Z,MAAM,+BAENI,EAAiB1d,IAGzBzG,EAAGokB,mBAAqB,WACpBxkB,EAAUykB,IAAI,UAAYrkB,EAAGmjB,UAEjCnjB,EAAG0jB,aAAe,SAAUY,GACpBA,EAAKC,YACLvkB,EAAGqjB,gBAAiB,EACpBrjB,EAAGsjB,kBAAmB,IAGtBtjB,EAAGsjB,kBAAmB,EACtBtjB,EAAGqjB,gBAAiB,GAG5B,IAAIW,GAAoB,SAAUvd,GAC9B,IAAK,GAAIxB,GAAI,EAAGA,EAAIwB,EAAcyD,OAAQjF,IAAK,CAC3C,GAAIgU,GAAOxS,EAAcxB,EACzBpF,GAAS2kB,cAAcvL,EAAKtU,GAAI3E,EAAGykB,gBAAiBzkB,EAAG0kB,gBAClDhjB,KAAKijB,EAAoBC,KAGlCX,EAAoB,SAAUxd,GAC9B,GAAIoe,GAAe7kB,EAAGsG,YAAY9F,KAC9BskB,EAAcD,EAAa3a,SAAWzD,EAAcyD,OAAS,EAAI,CACrErK,GAASklB,kBAAkBjlB,EAAamH,GAAI6d,GACvCpjB,KAAKsjB,EAAQJ,IAElBT,EAAmB,SAAU1d,GAC7B,IAAK,GAAIxB,GAAI,EAAGA,EAAIwB,EAAcyD,OAAQjF,IAAK,CAC3C,GAAIgU,GAAOxS,EAAcxB,EACzBpF,GAASolB,wBAAwBhM,EAAKtU,GAAI3E,EAAGklB,uBAAwBllB,EAAGmlB,uBACnEzjB,KAAK0jB,EAA2BR,KAGzCD,EAAqB,WACrB5kB,EAAa4B,SAAUC,QAAS,mCAEhCwjB,EAA4B,SAAUtjB,GACtC/B,EAAa4B,SAAUC,QAAS,gCAChCojB,EAAOljB,IAEP8iB,EAAa,SAAU9iB,GACvB/B,EAAagC,OAAQH,QAAS,8BAC9BjC,EAAKoC,MAAMD,IAEXkjB,EAAS,WACT9B,EAAO8B,UAGPK,EAAe,WACfxlB,EAASiO,cAAcpM,KAAK,SAAUI,GAClC9B,EAAGslB,SAAWxjB,EAAStB,KACvBR,EAAGykB,gBAAkBzkB,EAAGslB,SAAS,GAAG3gB,GAAGwN,YACxC,SAAUrQ,GACT/B,EAAagC,OAAQH,QAAS,qCAC9BjC,EAAKoC,MAAMD,MAGfyjB,EAAmB,WACnB1lB,EAAS2lB,gBAAgB1lB,EAAamH,IAAIvF,KAAK,SAAUI,GACrD9B,EAAGylB,MAAQ3jB,EAAStB,KACpBR,EAAGmjB,QAAUnjB,EAAGylB,MAAMxb,UAAU,GAAGtF,GACnC+gB,OAGJA,EAAc,WAKd,IAAK,GAHDb,MACAc,KACAC,EAAmB,iEACdnQ,EAAI,EAAGA,EAAIzV,EAAGylB,MAAMlR,MAAMrK,OAAQuL,IAAK,CAC5C,GAAIoQ,GAAY7lB,EAAGylB,MAAMlR,MAAMkB,GAC3BqQ,EAAYC,EAAWF,EAAUlhB,GACjCmhB,GACAH,EAAUliB,MACNkB,GAAImhB,EAAUnhB,GACdqhB,YAAaF,EAAUE,YACvBzF,KAAMsF,EAAUxN,WAChB4N,IAAKJ,EAAU7E,SACfrgB,YAAaklB,EAAUllB,YACvBulB,UAAWlmB,EAAGkV,YAAc,UAAY2Q,EAAUzkB,QAAU,iBAC5D+kB,QAASL,EAAUM,YACnBC,SAAqC,IAA3BP,EAAUQ,cAAsBV,EAAiBrT,QAAQ,MAAOuT,EAAUtY,aAAesY,EAAUpB,gBAAkB,QAInIG,EAAaphB,KAAKoiB,GAG1B7lB,EAAGsG,YAAY9F,KAAOqkB,EACtB7kB,EAAGujB,mBAAmB/iB,KAAOmlB,EACD,IAAxBd,EAAa3a,SACblK,EAAGojB,iBAAkB,IAGzB2C,EAAa,SAAUnO,GAEvB,IAAK,GADD2O,IAAQ,EACH9Q,EAAI,EAAGA,EAAIzV,EAAGylB,MAAMe,eAAetc,OAAQuL,IAChD,GAAIzV,EAAGylB,MAAMe,eAAe/Q,GAAGuQ,cAAgBpO,EAAQ,CACnD2O,EAAQvmB,EAAGylB,MAAMe,eAAe/Q,EAChC,OAGR,MAAO8Q,GAEXhB,KACAF,IA5IJpC,EAAoB7f,SAAW,OAAQ,WAAY,eAAgB,eAAgB,SAAU,YAAa,UAjC1GS,QACGC,OAAO,SACPsB,WAAW,sBAAuB6d,MA+KzC,WACI,YAuBA,SAASwD,GAAsB9mB,EAAME,EAAUgP,EAASjP,GACpD,GAAII,GAAKC,KACL6Q,EAAS,aACT4V,EAAW,GAAI1V,OAAM,GAAIA,MAAS,OAClCC,EAAc,GAAID,MAClBjL,EAAqBC,aAAaC,QAAQ,eAI1C,IAHAgL,EAAYC,QAAQwV,EAASvV,UAAY,IACzCnR,EAAG6F,aAAc,EAEdE,EAAmB,CAClB,GAAIG,GAASrC,QAAQsC,SAASJ,EAC9B/F,GAAGoG,OACCmC,KAAMrC,EAAO,KACbR,QAASQ,EAAO,QAChB1B,MAAO0B,EAAO,MACdmL,QAASxC,EAAQ,QAAQ3I,EAAO,QAAY4K,GAC5C1J,KAAMlB,EAAO,KACbid,QAASjd,EAAO,QAChBX,MAAOW,EAAO,MACdkL,UAAWvC,EAAQ,QAAQ3I,EAAO,UAAc4K,GAChD6V,MAAOzgB,EAAO,MACd0gB,OAAQ1gB,EAAO,OACfyF,IAAKzF,EAAO,IAEhB,IAAIqL,GAAQ1C,EAAQ,QAAQ7O,EAAGoG,MAAMgL,UAAWN,GAC5CU,EAAM3C,EAAQ,QAAQ7O,EAAGoG,MAAMiL,QAASP,EAC5CjR,GAASgnB,aAAatV,EAAOC,GAAK9P,KAAK,SAAUI,GAC7C9B,EAAG8mB,OAASC,EAAajlB,EAAStB,MAClCR,EAAGsG,YAAY9F,KAAOumB,EAAajlB,EAAStB,MAC5CR,EAAG6F,aAAc,QAIrB7F,GAAGoG,OACCmC,KAAK,GACL7C,QAAS,GACTlB,MAAO,GACP6M,QAASxC,EAAQ,QAAQ6X,EAAU5V,GACnC1J,KAAM,GACN+b,QAAS,GACT5d,MAAO,GACP6L,UAAWvC,EAAQ,QAAQoC,EAAaH,GACxC6V,MAAO,GACPC,OAAQ,IACRjb,IAAI,GAGZ,IAAII,GAAiB,yHACjBC,EAAiB,uHACjBgb,EAAmB,2HACnBC,EAAmB,gIAEvBjnB,GAAGsG,aACCC,aAAa,EACbC,wBAAwB,EACxBE,0BAA0B,EAC1BD,cAAezG,EAAG8F,YAClBa,cAAe,SAAUC,GACrB5G,EAAG4G,QAAUA,GAEjBO,aACGC,KAAM,SAAUC,YAAa,SAAUC,MAAO,GAAIgE,aAAcS,IAChE3E,KAAM,KAAMC,YAAa,KAAMC,MAAO,GAAIgE,aAAcU,IACxD5E,KAAM,eAAgBC,YAAa,gBAAiBC,MAAO,MAC3DF,KAAM,UAAWC,YAAa,UAAWC,MAAO,MAChDF,KAAM,OAAQC,YAAa,OAAQC,MAAO,MAC1CF,KAAM,QAASC,YAAa,QAASC,MAAO,KAC5CF,KAAM,QAASC,YAAa,QAASC,MAAO,IAAKgE,aAAc0b,IAC/D5f,KAAM,YAAaC,YAAa,YAAaC,MAAO,IAAKsY,KAAK,OAAQsH,WAAY,sBAClF9f,KAAM,QAASC,YAAa,UAAWC,MAAO,MAC9CF,KAAM,MAAOC,YAAa,UAAWC,MAAO,IAAKgE,aAAc2b,IAC/D7f,KAAM,MAAOC,YAAa,MAAOC,MAAO,OAGnDtH,EAAGmE,OAAS,WACR6B,aAAayB,QAAQ,eAAgB5D,QAAQ6D,OAAO1H,EAAGoG,OACvD,IAAImL,GAAQ1C,EAAQ,QAAQ7O,EAAGoG,MAAMgL,UAAWN,GAC5CU,EAAM3C,EAAQ,QAAQ7O,EAAGoG,MAAMiL,QAASP,EAC5C9Q,GAAG6F,aAAc,EACjBhG,EAASgnB,aAAatV,EAAOC,GAAK9P,KAAK,SAAUI,GAC7C9B,EAAG8mB,OAASC,EAAajlB,EAAStB,MAClCR,EAAGsG,YAAY9F,KAAOumB,EAAajlB,EAAStB,MAC5CR,EAAG6F,aAAc,IAIzB,IAAIshB,GAAe,SAAUC,GACzB,MAAKpnB,GAAGoG,MAAM+c,SAAWiE,EAAInd,UAAU,GAAGod,SAAgC,IAApBrnB,EAAGoG,MAAM+c,SAAqC,MAApBnjB,EAAGoG,MAAM+c,SACpFnjB,EAAGoG,MAAM5B,MAAM8iB,gBAAkBF,EAAInd,UAAU,GAAGxF,MAAM6iB,eAAqC,KAAnBtnB,EAAGoG,MAAM5B,OAAmC,OAAnBxE,EAAGoG,MAAM5B,OAC5GxE,EAAGoG,MAAMgB,KAAKkgB,cAAcC,MAAM,KAAK,KAAOH,EAAInd,UAAU,GAAGlC,UAAUuf,eACzEtnB,EAAGoG,MAAMgB,KAAKkgB,cAAcC,MAAM,KAAK,KAAOH,EAAInd,UAAU,GAAGjC,SAASsf,eACxEtnB,EAAGoG,MAAMgB,KAAKkgB,cAAcC,MAAM,KAAK,KAAOH,EAAInd,UAAU,GAAGjC,SAASsf,eACxEtnB,EAAGoG,MAAMgB,KAAKkgB,cAAcC,MAAM,KAAK,KAAOH,EAAInd,UAAU,GAAGjC,SAASsf,eACrD,KAAlBtnB,EAAGoG,MAAMgB,MAAiC,OAAlBpH,EAAGoG,MAAMgB,MAClCpH,EAAGoG,MAAMb,QAAU6hB,EAAInd,UAAU,GAAGrB,OAA6B,KAAnB5I,EAAGoG,MAAMb,OAAmC,OAAnBvF,EAAGoG,MAAMb,OAChFvF,EAAGoG,MAAMV,QAAQ4hB,gBAAkBF,EAAInd,UAAU,GAAGhC,QAAQqf,eAAuC,KAArBtnB,EAAGoG,MAAMV,SAAuC,OAArB1F,EAAGoG,MAAMV,SAClH1F,EAAGoG,MAAMuF,MAAQyb,EAAII,KAASxnB,EAAGoG,MAAMuF,KACvC3L,EAAGoG,MAAMwgB,SAAWQ,EAAIxO,QAA+B,QAApB5Y,EAAGoG,MAAMwgB,QAAwC,OAApB5mB,EAAGoG,MAAMwgB,QACzE5mB,EAAGoG,MAAMugB,QAAUS,EAAInd,UAAU,GAAGzB,WAAiC,KAAnBxI,EAAGoG,MAAMugB,OAAmC,OAAnB3mB,EAAGoG,MAAMugB,OACpF3mB,EAAGoG,MAAMmC,KAAK+e,gBAAkBF,EAAInd,UAAU,GAAG3B,KAAKgf,eAAoC,KAAlBtnB,EAAGoG,MAAMmC,MAAiC,OAAlBvI,EAAGoG,MAAMmC,MAGvG,GAFI,EAKfvI,GAAGoM,UAAY,SAASpF,GACpB,GAAG9D,QAAQ,4BAA8B8D,EAAIE,OAAO,GAAQ,QAAUF,EAAIE,OAAO,aAAkB,KAAK,CACpG,GAAIoF,GAAQtM,EAAGsG,YAAY9F,KAAK+L,QAAQvF,EAAIE,OAC5ClH,GAAGsG,YAAY9F,KAAKgM,OAAOF,EAAO,GAClCzM,EAAS4nB,YAAYzgB,EAAIE,OAAOvC,IAAIjD,KAAK,SAAUI,GAC3CA,GAA6B,GAAjBA,EAAStB,KACrBT,aAAa4B,SAAUC,QAAS,kBAGhC7B,aAAagC,OAAQH,QAAS,2BAElChC,EAAUoC,KAAK,gBAChB,SAAUD,GACTpC,EAAKoC,MAAMA,GACXhC,aAAagC,OAAQH,QAAS,8BAK1C,IAAImlB,GAAe,SAAUD,GAEzB,IAAK,GADDY,MACK/c,EAAImc,EAAO5c,OAAS,EAAGS,GAAK,EAAGA,IAEhCwc,EAAaL,EAAOnc,KACpB+c,EAAejkB,MACXkkB,UAAW9Y,EAAQ,QAAQiY,EAAOnc,GAAGoO,UAAWjI,GAChDnM,GAAImiB,EAAOnc,GAAGV,UAAU,GAAGod,QAC3B5iB,MAAOqiB,EAAOnc,GAAGV,UAAU,GAAGxF,MAC9BmjB,aAAcd,EAAOnc,GAAGV,UAAU,GAAGlC,UAAY,IAAM+e,EAAOnc,GAAGV,UAAU,GAAGjC,SAC9EC,QAAS6e,EAAOnc,GAAGV,UAAU,GAAGhC,QAChCK,KAAMwe,EAAOnc,GAAGV,UAAU,GAAG3B,KAC7BG,MAAOqe,EAAOnc,GAAGV,UAAU,GAAGzB,UAC9B+L,MAAOuS,EAAOnc,GAAG4J,MAAMrK,OACvB2d,IAAKf,EAAOnc,GAAG6b,eAAetc,OAC9Bsd,IAAKV,EAAOnc,GAAG6c,KAI3B,OAAOE,GAGX7nB,GAASoM,UAAUvK,KAAK,SAASI,GAC7B9B,EAAG8nB,KAAOhmB,EAAStB,OAGvBX,EAASsL,eAAezJ,KAAK,SAAUI,GACnC9B,EAAGoL,OAAStJ,EAAStB,OA3I7BimB,EAAsBrjB,SAAW,OAAQ,WAAY,UAAW,aAlChES,QACGC,OAAO,SACPsB,WAAW,wBAAyBqhB,GACpClb,UAAU,WAAY,WACrB,MAAO,UAAS7I,EAAOC,EAASolB,GAE5BplB,EAAQM,KAAK,mBAAoB,SAAS0a,GACtC,GAAIqK,GAAUrK,EAAMsK,OAAStK,EAAMqK,OAGnB,MAAZA,IACAtlB,EAAMwlB,OAAO,WAETxlB,EAAMS,MAAM4kB,EAAMI,cAGtBxK,EAAMyK,0BAmK1B,WACI,YAKA,SAASC,GAA8B1oB,GACnC,GAAIK,GAAKC,KACLqoB,IACAC,MAAO,eACP7I,SAAU,EACVlb,MAAO,4BACPgkB,SAAU,eACVC,SAAU,mBACVrgB,QAAS,uBAGVmgB,MAAO,eACP7I,SAAU,EACVlb,MAAO,4BACPgkB,SAAU,eACVC,SAAU,mBACVrgB,QAAS,uBAGTmgB,MAAO,eACP7I,SAAU,EACVlb,MAAO,4BACPgkB,SAAU,eACVC,SAAU,mBACVrgB,QAAS,uBAERsgB,GACAC,UAAW,gBACXC,KAAM,YACNC,QAAS,iBACTvgB,KAAM,YACNG,MAAO,KACPqgB,IAAK,QACLC,SAAU,GAAI/X,MAAK,cAEnBgY,IACAL,UAAW,gBACXM,OAAQ,OACRC,MAAO,EACPC,SAAU,gFAGXR,UAAW,kBACXM,OAAQ,OACRC,MAAO,GACPC,SAAU,+EAGbnpB,GAAGopB,aAAed,EAClBtoB,EAAGqpB,SAAWL,EACdhpB,EAAGspB,OAASZ,EACZ/oB,EAAK2E,IAAItE,GApBbqoB,EAA8BjlB,SAAW,QAnCzCS,QACGC,OAAO,SACPsB,WAAW,gCAAiCijB,MAyDnD,WACI,YAKA,SAASkB,GAAuB5pB,EAAME,EAAUC,EAAcC,EAAcmjB,EAAQtjB,GAChF,GAAII,GAAKC,IACTD,GAAGmjB,QAAUrjB,EAAamH,GAC1BjH,EAAGkV,YAAcrV,EAASsV,IAC1BnV,EAAGwpB,gBAAiB,CACpB,IAAIC,GAAa,SAAU3gB,GACvB,GAAIqB,KAMJ,OALAtG,SAAQgM,QAAQ7P,EAAGkL,UAAW,SAAUjG,GAChCA,EAAEN,KAAOmE,IACTqB,EAAUlF,KAGXkF,EAEXtK,GAASsL,eAAezJ,KAAK,SAAUI,GACnC9B,EAAGoL,OAAStJ,EAAStB,KACrBX,EAASoL,gBAAgBvJ,KAAK,SAAUI,GACpC9B,EAAGkL,UAAYpJ,EAAStB,KACxB+kB,QAGT1lB,EAASoM,UAAUvK,KAAK,SAASI,GAC7B9B,EAAG8nB,KAAOhmB,EAAStB,MAEtB,IAAI+kB,GAAmB,WACnB1lB,EAAS2lB,gBAAgBxlB,EAAGmjB,SAASzhB,KAAK,SAAUI,GAChD9B,EAAG0pB,UAAY5nB,EAAStB,KACxBR,EAAG0oB,aAAe1oB,EAAG0pB,UAAUzf,UAAU,GACzCjK,EAAGqK,QAAUof,EAAWzpB,EAAG0oB,aAAare,SACxCrK,EAAG2pB,cAAgBC,EAAuB5pB,EAAG0pB,UAAUlD,gBACvDxmB,EAAGuU,MAAQzS,EAAStB,KAAK+T,MACzBvU,EAAG6pB,WAAa/nB,EAAStB,KAAKqpB,aAGtC7pB,GAAAA,UAAY,WACR,GAAI8pB,GAAY5mB,QAAQ,8CACpB4mB,IACAjqB,EAAS4nB,YAAYznB,EAAGmjB,SAASzhB,KAAK,SAAUI,GACxCA,GAA6B,GAAjBA,EAAStB,KACrBT,EAAa4B,SAAUC,QAAS,kBAGhC7B,EAAagC,OAAQH,QAAS,2BAClChC,EAAUoC,KAAK,gBAChB,SAAUD,GACTpC,EAAKoC,MAAMA,GACXhC,EAAagC,OAAQH,QAAS,8BAI1C5B,EAAG+pB,QAAU,SAAUC,GACnB,GAAIxpB,IACAypB,aAAcD,EAAQrlB,GACtBqc,SAAUgJ,EAAQtK,SAEtB7f,GAASqqB,eAAelqB,EAAGmjB,QAAS3iB,GAAMkB,KAAK,SAAUI,GACjDA,GAA6B,GAAjBA,EAAStB,MACrBT,EAAa4B,SAAUC,QAAS,eAChCooB,EAAQrlB,GAAK7C,EAAStB,KACtBwpB,EAAQhJ,SAAWgJ,EAAQtK,SAC3B1f,EAAGuU,MAAM9Q,KAAKumB,IAGdjqB,EAAagC,OAAQH,QAAS,uBAClC5B,EAAGmqB,aAAc,GAElB,SAAUpoB,GACTpC,EAAKoC,MAAMA,GACXhC,EAAagC,OAAQH,QAAS,0BAGtC5B,EAAGoqB,YAAc,WACb,GAAItC,GAAO9nB,EAAG8nB,KAAK3T,OAAO,SAASkW,GAAI,MAAOrqB,GAAG6pB,YAAcQ,EAAE1lB,KAC7D2lB,EAAUxC,EAAK5d,OAAS,EAAI4d,EAAK,GAAGlc,KAAO,EAChC,MAAZ0e,EACIpnB,QAAQ,yBAA2BlD,EAAGmjB,QAAU,MAC/CtjB,EAAS0qB,eAAevqB,EAAGmjB,QAAQ,IAAIzhB,KAAK,SAASI,GAC7CA,GAA6B,GAAjBA,EAAStB,KACrBT,EAAa4B,SAAUC,QAAS,2BAGhC7B,EAAagC,OAAQH,QAAS,iCAKvCsB,QAAQ,YAAconB,EAAU,cAAgBtqB,EAAGmjB,QAAU,MAC5DtjB,EAAS0qB,eAAevqB,EAAGmjB,QAAQriB,SAASd,EAAG6pB,aAAanoB,KAAK,SAASI,GAClEA,GAA6B,GAAjBA,EAAStB,KACrBT,EAAa4B,SAAUC,QAAS,uBAGhC7B,EAAagC,OAAQH,QAAS,8BAKlD5B,EAAGwqB,WAAa,SAAUvR,GACtBpZ,EAAS4qB,kBAAkBzqB,EAAGmjB,QAASlK,EAAKtU,IAAIjD,KAAK,SAAUI,GACvDA,GAA6B,GAAjBA,EAAStB,MACrBT,EAAa4B,SAAUC,QAAS,iBAChC5B,EAAG6B,UAGH9B,EAAagC,OAAQH,QAAS,0BAClC5B,EAAGmqB,aAAc,GAClB,SAAUpoB,GACTpC,EAAKoC,MAAMA,GACXhC,EAAagC,OAAQH,QAAS,6BAGtC5B,EAAG0qB,UAAY,WACX9qB,EAAUoC,KAAK,UAAYhC,EAAGmjB,QAAU,cAE5CnjB,EAAG2qB,aAAe,WACd,GAAInqB,IACAyhB,WAAYjiB,EAAG0pB,UAAUzH,WACzBK,gBAAiBtiB,EAAG0pB,UAAUpH,gBAAkBtiB,EAAG0pB,UAAUpH,gBAAkB,GAC/EC,gBAAiBviB,EAAG0pB,UAAUnH,gBAAkBviB,EAAG0pB,UAAUnH,gBAAkB,GAC/E3J,OAAQ5Y,EAAG0pB,UAAU9Q,OAEzB/Y,GAAS+qB,gBAAgB5qB,EAAGmjB,QAAS3iB,GAAMkB,KAAK,SAAUI,GACnDA,GAA6B,GAAjBA,EAAStB,KACpBT,EAAa4B,SAAUC,QAAS,kBAEhC7B,EAAagC,OAAQH,QAAS,6BACnC,SAAUG,GACTpC,EAAKoC,MAAMA,GACXhC,EAAagC,OAAQH,QAAS,+BAGtC5B,EAAG6B,OAAS,WACRqhB,EAAO8B,UAEXhlB,EAAG6qB,iBAAmB,SAAU5R,GAC5BpZ,EAASirB,gBAAgB9qB,EAAGmjB,QAASlK,EAAKtU,GAAIsU,EAAK+H,UAAUtf,KAAK,WAC9D3B,EAAa4B,SAAUC,QAAS,kBACjC,SAAUG,GACTpC,EAAKoC,MAAMA,GACXhC,EAAagC,OAAQH,QAAS,iCAGtC5B,EAAG+qB,eAAiB,WAChB/qB,EAAG0oB,aAAalgB,UAAwC,MAA5BxI,EAAG0oB,aAAare,QAAkBrK,EAAG0oB,aAAalgB,UAAY,GAC1FxI,EAAG0oB,aAAahgB,WAAyC,MAA5B1I,EAAG0oB,aAAare,QAAkBrK,EAAG0oB,aAAahgB,WAAa;AAC5F7I,EAASmrB,mBAAmBhrB,EAAGmjB,QAASnjB,EAAG0oB,aAAa/jB,GAAI3E,EAAG0oB,cAAchnB,KAAK,SAAUI,GACpFA,GAA6B,GAAjBA,EAAStB,KACrBT,EAAa4B,SAAUC,QAAS,gCAEhC7B,EAAagC,OAAQH,QAAS,mCAClC5B,EAAGwpB,gBAAiB,GACrB,SAAUznB,GACTpC,EAAKoC,MAAMA,GACXhC,EAAagC,OAAQH,QAAS,sCAGtC5B,EAAG4T,mBAAqB,WACpBA,EAAmB5T,EAAG6T,gBAE1B7T,EAAG8T,qBAAuB,WACtB,GAA0B,OAAtB9T,EAAG+T,gBACH/T,EAAGgU,SAAWhU,EAAGiU,gBAChB,CACD,GAAIC,GAAgBlU,EAAGiU,YAAYE,OAAO,SAAUC,GAChD,MAAOA,GAAIf,SAAWrT,EAAG+T,iBAE7B/T,GAAGgU,SAAWE,IAGtBlU,EAAGirB,WAAa,WACZ,GAAIC,GAAiBhoB,QAAQ,wDAC1BgoB,IACCrrB,EAASsrB,iBAAiBnrB,EAAGmjB,SAASzhB,KAAK,SAAUI,GAC7CA,GAA6B,GAAjBA,EAAStB,KACrBT,EAAa4B,SAAUC,QAAS,qBAEhC7B,EAAagC,OAAQH,QAAS,iCACnC,SAAUG,GACTpC,EAAKoC,MAAMA,GACXhC,EAAagC,OAAQH,QAAS,mCAI1C5B,EAAGorB,oBAAsB,SAAUC,GAC/B,GAAIC,GAAkBpoB,QAAQ,kDAC3BooB,IACCzrB,EAAS0rB,uBAAuBvrB,EAAGmjB,QAASkI,GAAgB3pB,KAAK,SAAUI,GACnEA,GAA6B,GAAjBA,EAAStB,KACrBT,EAAa4B,SAAUC,QAAS,wBAEhC7B,EAAagC,OAAQH,QAAS,oCACnC,SAAUG,GACTpC,EAAKoC,MAAMA,GACXhC,EAAagC,OAAQH,QAAS,sCAI1C5B,EAAGwrB,wBAA0B,WACzB,GAAIC,GAAqBvoB,QAAQ,4DAC9BuoB,IACC5rB,EAAS6rB,2BAA2B1rB,EAAGmjB,SAASzhB,KAAK,SAAUI,GACvDA,EACA/B,EAAa4B,SAAUC,QAAS,4BAEhC7B,EAAagC,OAAQH,QAAS,wCACnC,SAAUG,GACTpC,EAAKoC,MAAMA,GACXhC,EAAagC,OAAQH,QAAS,0CAI1C5B,EAAG2rB,wBAA0B,WACzB,GAAIC,GAAyB1oB,QAAQ,sDAClC0oB,IACC/rB,EAASgsB,2BAA2B7rB,EAAGmjB,SAASzhB,KAAK,SAAUI,GACvDA,EACA/B,EAAa4B,SAAUC,QAAS,4BAEhC7B,EAAagC,OAAQH,QAAS,wCACnC,SAAUG,GACTpC,EAAKoC,MAAMA,GACXhC,EAAagC,OAAQH,QAAS,0CAI1C5B,EAAG8rB,cAAgB,WACf,GAAIC,IAAS,GAAI/a,OAAOgb,oBACpBC,GAAW,CACF,GAATF,IACAA,EAASG,KAAKC,IAAIJ,GAClBE,GAAW,EAEf,IAAIG,GAAOF,KAAKG,MAAMN,EAAS,IAC3BO,EAASP,EAAS,GAClBQ,GAAUN,EAAW,IAAM,MAAQ,IAAMG,GAAMI,MAAM,KAAO,IAAMF,GAAQE,MAAM,GACpF,OAAOD,IAEX1sB,EAASyK,YAAY5I,KAAK,SAAUI,GAChC9B,EAAG0R,OAAS5P,EAAStB,KACrBR,EAAG6T,cAAgB7T,EAAG0R,OAAO,GAAG/M,GAAGwN,WACnCyB,EAAmB5T,EAAG6T,gBAE1B,IAAID,GAAqB,SAAUS,GAC/BxU,EAASyU,gBAAgBD,GAAS3S,KAAK,SAAUI,GAC7C9B,EAAGgU,SAAWlS,EAAStB,KAAK+T,MAC5BvU,EAAGiU,YAAcnS,EAAStB,KAAK+T,MAC/BvU,EAAGwU,SAAW1S,EAAStB,KAAKiU,SAC5BzU,EAAGwU,SAAS/Q,KAAK,OACjBzD,EAAG+T,gBAAkB,SAGzB6V,EAAyB,SAAU6C,GAGnC,IAAI,GAFAC,MACAC,KACIlX,EAAI,EAAGA,EAAIgX,EAAUviB,OAAQuL,IAAK,CACtC,GAAImX,GAAKH,EAAUhX,GAAGiP,eAAe4C,aACjCqF,GAAgBC,KAEhBD,EAAgBC,IAAM,EACtBF,EAAMjpB,MACF4nB,eAAgBuB,EAChBC,aAAcJ,EAAUhX,GAAGjI,aAAa+E,QAAQ,MAAOqa,GACvDE,YAAaL,EAAUhX,GAAG2Q,eAItC,MAAOsG,IA1OfnD,EAAuBnmB,SAAW,OAAQ,WAAY,eAAgB,eAAgB,SAAU,aApChGS,QACGC,OAAO,SACPsB,WAAW,yBAA0BmkB,MAmR5C,WACI,YAKA,SAAS/R,KACL,GAAIuV,IACA3R,aAAc,SAAU4R,GAUpB,IAAK,GAHDnN,GAAGC,EAAG7a,EAAGgoB,EACTC,EAPAC,EAAS,GACTC,EAAY,mEACZzS,EAAQ,GAAIM,YAAW+R,GACvBK,EAAa1S,EAAM0S,WACnBC,EAAgBD,EAAa,EAC7BE,EAAaF,EAAaC,EAIrB7X,EAAI,EAAO8X,EAAJ9X,EAAgBA,GAAQ,EAEpCyX,EAASvS,EAAMlF,IAAM,GAAOkF,EAAMlF,EAAI,IAAM,EAAKkF,EAAMlF,EAAI,GAE3DoK,GAAa,SAARqN,IAAqB,GAC1BpN,GAAa,OAARoN,IAAmB,GACxBjoB,GAAa,KAARioB,IAAiB,EACtBD,EAAY,GAARC,EAEJC,GAAUC,EAAUvN,GAAKuN,EAAUtN,GAAKsN,EAAUnoB,GAAKmoB,EAAUH,EAiBrE,OAdqB,IAAjBK,GACAJ,EAAQvS,EAAM4S,GACd1N,GAAa,IAARqN,IAAgB,EAErBpN,GAAa,EAARoN,IAAc,EACnBC,GAAUC,EAAUvN,GAAKuN,EAAUtN,GAAK,MAChB,GAAjBwN,IACPJ,EAASvS,EAAM4S,IAAe,EAAK5S,EAAM4S,EAAa,GACtD1N,GAAa,MAARqN,IAAkB,GACvBpN,GAAa,KAARoN,IAAiB,EAEtBjoB,GAAa,GAARioB,IAAe,EACpBC,GAAUC,EAAUvN,GAAKuN,EAAUtN,GAAKsN,EAAUnoB,GAAK,KAEpDkoB,GAEXK,eAAiB,SAAUC,GACvB,GAAIC,GAAU,GAAI1c,KAElB,OADA0c,GAAQC,WAAWD,EAAQE,aAAeH,EAAOI,YAC1CJ,EAAOK,aACVJ,EACA,MAERK,QAAU,SAAUC,GAChB,MAAOC,UAASC,IAAIC,OAAOC,MAAMJ,GAAgB7b,SAAS8b,SAASC,IAAIG,OAE3EC,SAAW,SAAUC,GACjB,GAAIC,GAAYD,EAAMhH,MAAM,KAAK,GAC7B4F,EAASqB,EAAUjc,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KACpDkc,EAAcC,mBAAmBC,KAAKxB,GAAQ5F,MAAM,IAAIqH,IAAI,SAAU3pB,GACtE,MAAO,KAAO,KAAOA,EAAE4pB,WAAW,GAAG1c,SAAS,KAAKqa,MAAM,MAC1DsC,KAAK,IACR,OAAOC,MAAKX,MAAMK,IAEtBO,YAAc,WAIV,IAHA,GAAIC,GAAiB,qBACjBC,EAAUD,EAAeE,KAAKC,OAAOC,SAASC,MAC9Clb,KACc,MAAX8a,GACH9a,EAAI8a,EAAQ,IAAMA,EAAQ,GAC1BA,EAAUD,EAAeE,KAAKC,OAAOC,SAASC,KAElD,OAAOlb,IAGf,OAAO2Y,GAzEXlpB,QACKC,OAAO,SACPyrB,QAAQ,YAAa/X,MA4E9B,WAMI,QAASgY,GAAYxrB,EAAYyrB,GAW7B,QAASC,GAAkBrsB,GACvB,MAAyB,QAAlBA,EAAOssB,SAAoD,IAA/BtsB,EAAOghB,IAAI9X,QAAQ,UAAkBkjB,EAAeG,IAAIvsB,EAAOghB,MAXtG,GAAI/G,GAAYtZ,EAAWsZ,SAC3B,QACIuS,QAAS,SAAUxsB,GAIf,MAHKqsB,GAAkBrsB,KACnBA,EAAOysB,QAAQ,cAAmBxS,EAAUC,KAAKwS,IAAIC,YAAc,UAAkB1S,EAAUC,KAAK0S,OAEjG5sB,IAyBnBmsB,EAAYpsB,SAAW,aAAc,kBArCrCS,QACKC,OAAO,SACPyrB,QAAQ,cAAeC,MAoBhC,WACI,YAiBA,SAAS3vB,GAASqwB,EAAOlsB,EAAYpE,EAAW4C,EAASiV,EAAI5I,GACzD,GAAIqG,GAAclR,EAAWsZ,UAAU6S,OACnCC,GACIC,SAAU,kBACVC,UAAW,mBACXC,SAAU,WACVC,eAAgB,gBAChBjQ,KAAM,OACNkQ,WAAY,YACZC,kBAAmB,sBACnBC,UAAW,aACXlS,KAAM,OACNmS,UAAW,aACXC,cAAe,gBACfC,eAAgB,mBAChBC,WAAY,cACZvO,cAAe,kBACfvY,UAAW,UACX+mB,gBAAiB,eACjBnI,QAAS,UACToI,aAAc,gBACdrI,KAAM,OACNsI,UAAW,YACXC,kBAAmB,eACnBC,kBAAmB,sBACnBC,iBAAkB,uBAClBC,2BAA4B,8BAC5BC,wBAAyB,+BACzBvG,mBAAoB,oBACpBd,eAAgB,iBAChBO,kBAAmB,iBACnB+G,aAAc,eACdC,aAAc,mBACd3G,gBAAiB,iBACjBF,gBAAiB,YACjB7F,kBAAmB,oBACnB0C,YAAa,aACbiK,oBAAqB,YACrBC,qBAAsB,yBACtBC,mBAAoB,aACpBpN,cAAe,iBACf2G,iBAAkB,mBAClBO,2BAA4B,gCAC5BG,2BAA4B,+BAC5BN,uBAAwB,6CACxBtgB,cAAe,iBACf+X,cAAe,kBACf7X,aAAc,eACd0mB,eAAgB,oBAChBvM,SAAU,UACVhkB,UAAW,WACXwwB,KAAM,MACNpa,OAAQ,QACRqa,WAAY,cACZC,WAAY,wBACZC,YAAa,aACbC,iBAAkB,4BAClBC,eAAgB,iBAChBC,qBAAsB,sBACtBC,qBAAsB,uBACtBC,wBAAyB,kBAE7BC,GACAjuB,IAAK,SAAUkuB,GACX,MAAOtC,GAAMuC,KAAKvd,EAAc,IAAMkb,EAAUC,UAAYqC,KAAMF,KAEtEvnB,cAAe,WACX,MAAOilB,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUnlB,gBAEnD+X,cAAe,WACX,MAAOkN,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUpN,gBAEnD7X,aAAc,WACV,MAAO+kB,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUjlB,eAEnDwnB,KAAM,WACFnd,QAAQlR,IAAI,cAAeN,EAAWsZ,WAClCtZ,EAAWsZ,UAAUC,MAAQvZ,EAAWsZ,UAAUC,KAAKwS,MACvD/rB,EAAWsZ,UAAUiB,iBAAkB,EACvCva,EAAWsZ,UAAUsV,UAAY,GACjCC,eAAeprB,QAAQ,SAAUzD,EAAWsZ,UAAUC,KAAKwS,KAC3Dva,QAAQlR,IAAI,sBAAuBN,EAAWsZ,WAC9C1d,EAAUykB,IAAIzkB,EAAUoC,UAGhCsc,OAAQ,WACJuU,eAAerI,WAAW,UAC1BxmB,EAAWsZ,aACX9a,EAAQ6sB,SAASyD,KAAO,gCAE5B1wB,SAAU,SAAUiS,GAChB,MAAO6b,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUG,SAAW,IAAMlc,IAEpE/J,UAAW,WACP,MAAO4lB,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUG,WAEnD/P,kBAAmB,WACf,MAAO0P,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUI,iBAEnDhvB,YAAa,SAAU6S,EAAS7T,GAC5B,MAAO0vB,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAUG,SAAW,IAAMlc,EAAS7T,IAE7EiB,YAAa,SAAUjB,GACnB,MAAO0vB,GAAMuC,KAAKvd,EAAc,IAAMkb,EAAUG,SAAU/vB,IAE9DyB,YAAa,SAAUgF,GACnB,MAAOipB,GAAAA,UAAahb,EAAc,IAAMkb,EAAUG,SAAW,IAAMtpB,IAEvEhB,QAAS,SAAU2R,GACf,MAAOsY,GAAMN,IAAI1a,EAAc,IAAMkb,EAAU7P,KAAO,IAAM3I,IAEhEtD,gBAAiB,SAAUD,GACvB,MAAO6b,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUK,WAAa,IAAMpc,IAEtE6K,uBAAwB,SAAU7K,GAC9B,MAAO6b,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUM,kBAAkBne,QAAQ,OAAQ8B,KAErF2e,YAAa,SAAU3wB,EAAS4wB,GAC5B,GAAIzyB,IAAS4Y,OAAQ6Z,EACrB,OAAO/C,GAAMuC,KAAKvd,EAAc,IAAMkb,EAAUO,UAAY,IAAMtuB,EAAS7B,IAE/E6Y,WAAY,SAAUzB,EAAQpX,GAC1B,MAAO0vB,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAU7P,KAAO,IAAM3I,EAAQpX,IAExE8Y,WAAY,SAAU9Y,GAClB,MAAO0vB,GAAMuC,KAAKvd,EAAc,IAAMkb,EAAU7P,KAAM/f,IAE1Dge,QAAS,WACL,MAAO0R,GAAMN,IAAI1a,EAAc,IAAMkb,EAAU3R,MAAxCyR,SACI,SAAUrrB,GACI,MAAbA,EAAE+hB,SACFpR,QAAQlR,IAAI,OAAQO,GACpBguB,eAAerI,WAAW,UAC1B4E,OAAOC,SAASyD,KAAO9uB,EAAWsZ,UAAU4V,cAI5DpS,UAAW,WACP,MAAOoP,GAAM,UAAUhb,EAAc,IAAMkb,EAAUQ,YAEzDnR,cAAe,SAAU7H,EAAQub,GAC7B,GAAI3yB,IAASyW,OAAQW,EAAQoJ,SAAUmS,EACvC,OAAOjD,GAAMuC,KAAKvd,EAAc,IAAMkb,EAAUS,cAAerwB,IAEnEogB,eAAgB,SAAUhJ,GACtB,MAAOsY,GAAAA,UAAahb,EAAc,IAAMkb,EAAUU,eAAiB,IAAMlZ,IAE7E6K,WAAY,SAAUX,EAAWE,GAC7B,GAAIxhB,IAAS4yB,UAAWtR,EAAWuR,YAAarR,EAChD,OAAOkO,GAAMuC,KAAKvd,EAAc,IAAMkb,EAAUW,WAAYvwB,IAEhEgiB,cAAe,SAAUV,EAAWE,EAAasR,GAC7C,GAAI9yB,IAAS4yB,UAAWtR,EAAWuR,YAAarR,EAChD,OAAOkO,GAAMuC,KAAKvd,EAAc,IAAMkb,EAAU5N,cAAcjQ,QAAQ,MAAO+gB,GAAiB9yB,IAElGoiB,aAAc,WACV,MAAOsN,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUnmB,YAEnD0Y,mBAAoB,SAAU/a,GAC1B,MAAOsoB,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUY,gBAAkB,IAAMppB,IAE3E2rB,WAAY,SAAUzR,GAClB,MAAOoO,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUvH,QAAU,IAAM/G,IAEnEF,cAAe,SAAUphB,EAAMoH,GAC3B,MAAOsoB,GAAMuC,KAAKvd,EAAc,IAAMkb,EAAUY,gBAAkB,IAAMppB,EAAQpH,IAEpFqhB,cAAe,SAAUrhB,EAAMshB,GAC3B,MAAOoO,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAUvH,QAAU,IAAM/G,EAAWthB,IAE9EuK,gBAAiB,WACb,MAAOmlB,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUa,eAEnDlnB,YAAa,SAAUnC,GACnB,MAAOsoB,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUxH,KAAO,IAAMhhB,IAEhEkC,WAAY,SAAUtJ,GAClB,MAAO0vB,GAAMuC,KAAKvd,EAAc,IAAMkb,EAAUxH,KAAMpoB,IAE1DsN,YAAa,WACT,MAAOoiB,GAAMN,IAAI1a,EAAc,IAAMkb,EAAU9K,WAEnD1X,eAAgB,SAAU3G,GACtB,MAAOipB,GAAMN,IAAI1a,EAAc,IAAMkb,EAAU9K,SAAW,IAAMre,IAEpEyG,cAAe,SAAUlN,GACrB,MAAO0vB,GAAMuC,KAAKvd,EAAc,IAAMkb,EAAU9K,SAAU9kB,IAE9DiN,cAAe,SAAUxG,EAAIzG,GACzB,MAAO0vB,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAU9K,SAAW,IAAMre,EAAIzG,IAExE0B,aAAc,WACV,MAAOguB,GAAMN,IAAI1a,EAAc,IAAMkb,EAAU9uB,YAEnD8L,gBAAiB,SAAUnG,GACvB,MAAOipB,GAAMN,IAAI1a,EAAc,IAAMkb,EAAU9uB,UAAY,IAAM2F,IAErE+F,eAAgB,SAAU/F,EAAIzG,GAC1B,MAAO0vB,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAU9uB,UAAY,IAAM2F,EAAIzG,IAEzEyM,eAAgB,SAAUzM,GACtB,MAAO0vB,GAAMuC,KAAKvd,EAAc,IAAMkb,EAAU9uB,UAAWd,IAE/DyL,QAAS,WACL,MAAOikB,GAAMN,IAAI1a,EAAc,IAAMkb,EAAU0B,OAEnDpmB,WAAY,SAAUzE,GAClB,MAAOipB,GAAMN,IAAI1a,EAAc,IAAMkb,EAAU0B,KAAO,IAAM7qB,IAEhE4E,UAAW,SAAU5E,EAAIzG,GACrB,MAAO0vB,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAU0B,KAAO,IAAM7qB,GAAM2E,KAAQpL,KAE9E2L,UAAW,SAAU3L,GACjB,MAAO0vB,GAAMuC,KAAKvd,EAAc,IAAMkb,EAAU0B,MAAQlmB,KAAQpL,KAEpE6L,UAAW,SAAUZ,GACjB,MAAOykB,GAAM,UAAUhb,EAAc,IAAMkb,EAAU0B,KAAO,IAAMrmB,IAEtE8Q,UAAW,WACP,MAAO2T,GAAMN,IAAI1a,EAAc,IAAMkb,EAAU1Y,SAEnDtB,cAAe,WACX,MAAO8Z,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUyB,iBAEnD1V,aAAc,SAAUlV,GACpB,GAAInF,GAAWouB,EAAMN,IAAI1a,EAAc,IAAMkb,EAAU1Y,QACnD8b,EAAW/b,EAAGgc,QACdC,IAKJ,OAJA5xB,GAASJ,KAAK,SAAU+U,GACpBid,EAAc7kB,EAAQ,WAAW,KAAM5H,EAAIwP,EAAMjW,MACjDgzB,EAASG,QAAQD,IAClB,WAAcF,EAASI,WACnBJ,EAASjyB,SAEpB8a,YAAa,SAAU7b,GACnB,MAAO0vB,GAAMuC,KAAKvd,EAAc,IAAMkb,EAAU1Y,OAAQlX,IAE5D4b,YAAa,SAAUnV,EAAIzG,GACvB,MAAO0vB,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAU1Y,OAAS,IAAMzQ,EAAIzG,IAEtEgH,SAAU,WACN,MAAO0oB,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUxH,OAEnDja,cAAe,WACX,MAAOuhB,GAAMN,IAAI1a,EAAc,IAAMkb,EAAU2B,aAEnDntB,UAAW,SAAUJ,EAAOe,EAAOC,EAAWC,EAAUC,EAASmuB,EAAS3qB,GACtE,MAAOgnB,GAAMuC,KAAKvd,EAAc,IAAMkb,EAAUc,WAC5CppB,OAAQ,EACRrD,MAAOD,EACPoE,MAAOrD,EACPwC,UAAWvC,EACXwC,SAAUvC,EACVwC,QAASvC,EACTsE,QAAS6pB,EACTC,WAAY5qB,KAGpBW,WAAY,SAAU5C,EAAIzG,GACtB,MAAO0vB,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAUxH,KAAO,IAAM3hB,EAAIzG,IAEpEiS,aAAc,SAAUlB,EAAOC,EAAKuiB,EAAQC,GACxC,GAAIC,GAASF,EAAOjF,KAAK,KACrBoF,EAAaF,EAAWlF,KAAK,IACjC,OAAOoB,GAAMN,IAAI1a,EAAc,IAAMkb,EAAU4B,WAAa,UAAYzgB,EAAQ,QAAUC,EAAM,kBAAoByiB,EAAS,sBAAwBC,IAEzJzgB,qBAAsB,SAAUlC,EAAOC,GACnC,MAAO0e,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUe,kBAAoB,UAAY5f,EAAQ,QAAUC,IAErG+B,sBAAuB,SAAUhC,EAAOC,GACpC,MAAO0e,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUgB,kBAAoB,UAAY7f,EAAQ,QAAUC,IAErGsD,0BAA2B,SAAU8C,EAAQrG,EAAOC,EAAK2iB,EAASC,GAC9D,MAAOlE,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUiB,iBAAiB9e,QAAQ,MAAOqF,GACzE,UAAYrG,EAAQ,QAAUC,EAAM,YAAc2iB,EAAU,gBAAkBC,IAExFzf,8BAA+B,SAAUiD,EAAQrG,EAAOC,EAAK2iB,EAASC,GAClE,MAAOlE,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUkB,2BAA2B/e,QAAQ,MAAOqF,GACnF,UAAYrG,EAAQ,QAAUC,EAAM,YAAc2iB,EAAU,gBAAkBC,IAExFpf,2BAA4B,SAAU4C,EAAQrG,EAAOC,EAAK2iB,EAASC,GAC/D,MAAOlE,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUmB,wBAAwBhf,QAAQ,MAAOqF,GAChF,UAAYrG,EAAQ,QAAUC,EAAM,YAAc2iB,EAAU,gBAAkBC,IAExFvN,aAAc,SAAUzV,EAAWC,GAC/B,MAAO6e,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUoB,aAAe,IAAMpgB,EAAY,IAAMC,IAE1FmU,gBAAiB,SAAUrC,GACvB,MAAO+M,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUqB,aAAalf,QAAQ,MAAO4Q,KAE/E2H,gBAAiB,SAAU3H,EAASvL,EAAQyc,GACxC,GAAI7zB,IAASwgB,SAAUlgB,SAASuzB,GAChC,OAAOnE,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAUtF,gBAAgBvY,QAAQ,MAAO4Q,GAAW,IAAMvL,EAAQpX,IAE3GoqB,gBAAiB,SAAUzH,EAAS3iB,GAChC,MAAO0vB,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAUxF,gBAAgBrY,QAAQ,MAAO4Q,GAAU3iB,IAE5FukB,kBAAmB,SAAU5B,EAASyD,GAClC,GAAI0N,GAAc/B,EAAIgC,uBAClB/zB,GAASoY,OAAQ0b,EAAY1N,GAAQnmB,KACzC,OAAOyvB,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAUrL,kBAAkBxS,QAAQ,OAAQ4Q,GAAU3iB,IAE/F+pB,eAAgB,SAAUpH,EAAS1X,GAC/B,MAAOykB,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAUwB,mBAAmBrf,QAAQ,OAAQ4Q,IAAY0G,WAAcpe,KAEhH0f,iBAAkB,SAAUhI,GACxB,MAAO+M,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAUjF,iBAAiB5Y,QAAQ,OAAQ4Q,QAEpFuI,2BAA4B,SAAUvI,GAClC,MAAO+M,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAU1E,2BAA2BnZ,QAAQ,OAAQ4Q,QAE9F0I,2BAA4B,SAAU1I,GAClC,MAAO+M,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAUvE,2BAA2BtZ,QAAQ,OAAQ4Q,QAE9FoI,uBAAwB,SAAUpI,EAASkI,GACvC,MAAO6E,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAU7E,uBAAuBhZ,QAAQ,OAAQ4Q,GAAS5Q,QAAQ,mBAAoB8Y,QAE/HkJ,qBAAsB,WAClB,QAAU9zB,KAAM,IAAKmL,KAAM,gBAAmBnL,KAAM,IAAKmL,KAAM,cAAiBnL,KAAM,IAAKmL,KAAM,aAErGof,mBAAoB,SAAU7H,EAASrB,EAAWthB,GAC9C,MAAO0vB,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAUpF,mBAAmBzY,QAAQ,MAAO4Q,GAAW,IAAMrB,EAAWthB,IAEjH0pB,eAAgB,SAAU/G,EAAS3iB,GAC/B,MAAO0vB,GAAMuC,KAAKvd,EAAc,IAAMkb,EAAUlG,eAAe3X,QAAQ,MAAO4Q,GAAU3iB,IAE5FiqB,kBAAmB,SAAUtH,EAASvL,GAClC,MAAOsY,GAAM,UAAUhb,EAAc,IAAMkb,EAAU3F,kBAAkBlY,QAAQ,MAAO4Q,GAAW,IAAMvL,IAE3G6P,YAAa,SAAUtE,GACnB,MAAO+M,GAAM,UAAUhb,EAAc,IAAMkb,EAAU3I,YAAYlV,QAAQ,OAAQ4Q,KAErFqB,cAAe,SAAUgQ,EAAaC,EAAWC,GAC7C,GAAIl0B,IACAwlB,YAAawO,EACbC,UAAWA,EACX/P,eAAgBgQ,EAEpB,OAAOxE,GAAMuC,KAAKvd,EAAc,IAAMkb,EAAU5L,cAAehkB,IAEnEykB,wBAAyB,SAAU0P,EAAYpnB,EAAWmnB,GACtD,GAAIl0B,IACAi0B,UAAWlnB,EACXmX,eAAgBgQ,EAEpB,OAAOxE,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAU5L,cAAgB,IAAMmQ,EAAYn0B,IAErFo0B,gBAAiB,SAAU3tB,EAAI4tB,GAC3B,MAAO3E,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAUsB,oBAAoBnf,QAAQ,OAAQtL,IAAO6tB,gBAAmBD,KAEjHnf,cAAe,SAAUzO,EAAI4tB,GACzB,MAAO3E,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAUuB,qBAAqBpf,QAAQ,OAAQtL,IAAO6tB,gBAAmBD,KAElH3hB,YAAa,SAAU1S,GACnB,MAAO0vB,GAAMuC,KAAKvd,EAAc,IAAMkb,EAAU6B,YAAazxB,GAAQu0B,aAAc,UAEvF/b,mBAAoB,SAAUpB,GAC1B,MAAOsY,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUgC,qBAAuB,IAAMxa,IAEhFuC,kBAAmB,SAAU3Z,GACzB,MAAO0vB,GAAMuC,KAAKvd,EAAc,IAAMkb,EAAU+B,eAAgB3xB,IAEpE0Z,qBAAsB,SAAU1Z,GAC5B,MAAO0vB,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAU+B,eAAgB3xB,IAEnE+V,2BAA4B,SAAU/V,GAClC,MAAO0vB,GAAM6C,IAAI7d,EAAc,IAAMkb,EAAUiC,qBAAsB7xB,IAEzEyZ,qBAAsB,SAAUgC,EAASrE,GACrC,MAAOsY,GAAAA,UAAahb,EAAc,IAAMkb,EAAU+B,eAAiB,IAAMlW,EAAU,IAAMrE,IAE7FP,2BAA4B,SAAU4E,EAAS+Y,GAC3C,MAAO9E,GAAMN,IAAI1a,EAAc,IAAMkb,EAAUkC,wBAA0B,IAAMrW,EAAU,IAAM+Y,IAEnG7f,IAAKD,EAET,OAAOqd,GAlWX1yB,EAASuD,SAAW,QAAS,aAAc,YAAa,UAAW,KAAM,WAtCzES,QACKC,OAAO,SACPyrB,QAAQ,WAAY1vB,GACpBsU,OAAO,UAAW,WACf,MAAO,UAAU8gB,EAAcC,EAAeC,GAE1C,IADA,GAAI1f,GAAI,EAAG2f,EAAMD,EAAWjrB,OACjBkrB,EAAJ3f,EAASA,IACZ,GAAI0f,EAAW1f,GAAGwf,KAAkBC,EAChC,MAAOC,GAAW1f,EAG1B,OAAO,YAiYvB,WACC,YAKA,SAAS4f,GAAerxB,EAAYpE,EAAW4C,EAAS3C,GACvD,GAAIG,GAAKC,IAKT,IAJAD,EAAGs1B,UAAYtxB,EAAWsZ,UAAU4V,UACpClzB,EAAGu1B,SAAWvxB,EAAWsZ,UAAUkY,OACnCx1B,EAAGy1B,wBAA0BjzB,EAAQ6sB,SAASyD,KAE1C9uB,EAAWsZ,UAAUiB,gBAAiB,CACzC,GAAIvc,GAAOgC,EAAW0xB,cAAgB,UACtC91B,GAAUoC,KAAKA,GACfwT,QAAQlR,IAAI,6BAEZzE,EAASyE,IAAI,aAAa5C,KAAK,SAAUI,GACxC0T,QAAQlR,IAAI,sBAAuBxC,KAGrCkE,aAAawkB,WAAW,gBACxBxkB,aAAawkB,WAAW,oBAmBzB6K,EAAejyB,SAAW,aAAc,YAAa,UAAW,YAvChES,QACEC,OAAO,SACPsB,WAAW,iBAAkBiwB,MAwBhC,WACI,YAOA,SAASM,GAAS3xB,EAAYpE,EAAW4X,GAErC,GAAIoe,GAAS/C,eAAe5sB,QAAQ,UAChC4vB,EAAUD,GAAoB,IAAVA,EAAeA,EAASE,MAAMC,OAAOxH,KAExDsH,KACDzG,OAAOC,SAASyD,KAAOgD,MAAMC,OAAOC,UACxC,IAAIC,GAAiBJ,EAAUre,EAAU8W,SAASuH,GAAW,KACzDK,EAAYD,EAAuD,SAAtCA,EAAe,oBAAgC,CAGhFjyB,GAAWsZ,WACPsV,UAAWhzB,EAAUuE,SAASgyB,IAC9BX,OAAQhe,EAAUuW,QAAQ+H,MAAMC,OAAOK,QACvCC,UAAW7e,EAAUuW,QAAQ+H,MAAMC,OAAOO,WAC1C/Y,MACI0S,MAAS4F,GAAW,GACpBU,WAAc,GACd9xB,MAASwxB,EAAiBA,EAAe,MAAW,EACpDnuB,OAAUmuB,EAAiBA,EAAe,iBAAmB,EAC7DpX,gBAAmBoX,GAAkBC,EAAmD,SAAvCD,EAAe,qBAAiC,EACjGlY,eAAkB,EAClBgS,IAAOkG,GAAkBC,EAAYL,EAAU,MAEnD1F,OAAQ2F,MAAMC,OAAOxD,IACrBhU,gBAAiB0X,GAAqC,KAAnBA,GAAyBC,EAC5DhD,UAAW4C,MAAMC,OAAOC,UAEpBhyB,GAAW0Z,IAAI,oBAAqB,WACxC,IAAK1Z,EAAWsZ,UAAUiB,gBAAiB,CACvC,GAAIvc,GAAOpC,EAAUoC,MACjBA,IAAiB,MAATA,IACRgC,EAAW0xB,aAAe1zB,GAE9BpC,EAAUoC,KAAK,KAEnBgC,EAAWyZ,gBAAiB,IADpCkY,EAASvyB,SAAW,aAAc,YAAa,aAxC/CS,QACKC,OAAO,SACP0yB,IAAIb,MA4Cb,WACI,YAIA,SAASc,GAAYC,GACjB,GAAIC,GAAcD,EAAeE,IACjCF,GAAeE,KAAO,SAAU50B,EAAM60B,GAQlC,MAPAA,GAAMlD,QAAUkD,EAAMlD,YACtB9vB,QAAQizB,OAAOD,EAAMlD,SAEjBoD,eAAA,WAAe,SAAUl3B,GACrB,MAAOA,GAAS8yB,WAGjBgE,EAAYK,KAAKN,EAAgB10B,EAAM60B,IAElDH,EACCE,KAAK,KACF7Z,YAAa,2BACb3X,WAAY,iBACZ4X,aAAc,OAEjB4Z,KAAK,YACF7Z,YAAa,qCACb3X,WAAY,kBACZ4X,aAAc,OAEjB4Z,KAAK,sBACF7Z,YAAa,uCACb3X,WAAY,qBACZ4X,aAAc,UAEjB4Z,KAAK,SACF7Z,YAAa,mCACb3X,WAAY,iBACZ4X,aAAc,SAEjB4Z,KAAK,sBACF7Z,YAAa,qCACb3X,WAAY,qBACZ4X,aAAc,OAEjB4Z,KAAK,eACF7Z,YAAa,uCACb3X,WAAY,uBACZ4X,aAAc,OAEjB4Z,KAAK,sBACF7Z,YAAa,8CACb3X,WAAY,8BACZ4X,aAAc,OAEjB4Z,KAAK,gBACF7Z,YAAa,yCACb3X,WAAY,wBACZ4X,aAAc,UAEjB4Z,KAAK,SACF7Z,YAAa,uCACb3X,WAAY,iBACZ4X,aAAc,UAEjB4Z,KAAK,iBACF7Z,YAAa,2CACb3X,WAAY,qBACZ4X,aAAc,UAEjB4Z,KAAK,cACF7Z,YAAa,yCACb3X,WAAY,yBACZ4X,aAAc,UAEjB4Z,KAAK,uBACF7Z,YAAa,uCACb3X,WAAY,sBACZ4X,aAAc,OAGjB4Z,KAAK,gBACF7Z,YAAa,wCACb3X,WAAY,uBACZ4X,aAAc,UAEjB4Z,KAAK,mBACF7Z,YAAa,2CACb3X,WAAY,0BACZ4X,aAAc,UAEjB4Z,KAAK,uBACF7Z,YAAa,2CACb3X,WAAY,0BACZ4X,aAAc,UAEjB4Z,KAAK,iBACF7Z,YAAa,yCACb3X,WAAY,wBACZ4X,aAAc,UAEjB4Z,KAAK,yBACE7Z,YAAa,6CACb3X,WAAY,4BACZ4X,aAAc,UAErB4Z,KAAK,gBACF7Z,YAAa,wCACb3X,WAAY,uBACZ4X,aAAc,UAEjB4Z,KAAK,0BACF7Z,YAAa,kDACb3X,WAAY,iCACZ4X,aAAc,UAEjB4Z,KAAK,oBACF7Z,YAAa,2CACb3X,WAAY,2BACZ4X,aAAc,UAEjB4Z,KAAK,6BACF7Z,YAAa,2CACb3X,WAAY,2BACZ4X,aAAc,UAEjB4Z,KAAK,oBACF7Z,YAAa,wCACb3X,WAAY,uBACZ4X,aAAc,UAEjB4Z,KAAK,wBACF7Z,YAAa,2CACb3X,WAAY,0BACZ4X,aAAc,UAEjB4Z,KAAK,qCACF7Z,YAAa,2CACb3X,WAAY,0BACZ4X,aAAc,UAEjB4Z,KAAK,kBACF7Z,YAAa,8CACb3X,WAAY,wBACZ4X,aAAc,UAEjB4Z,KAAK,mBACF7Z,YAAa,+CACb3X,WAAY,yBACZ4X,aAAc,UAEjB4Z,KAAK,wBACF7Z,YAAa,oDACb3X,WAAY,8BACZ4X,aAAc,UAEjB4Z,KAAK,2BACE7Z,YAAa,+CACb3X,WAAY,yBACZ4X,aAAc,UAErB4Z,KAAK,4BACF7Z,YAAa,kDACT3X,WAAY,4BACZ4X,aAAc,UAErB4Z,KAAK,kCACF7Z,YAAa,wDACb3X,WAAY,kCACZ4X,aAAc,UAEjB4Z,KAAK,6BACF7Z,YAAa,mDACb3X,WAAY,6BACZ4X,aAAc,UAEjB4Z,KAAK,wBACF7Z,YAAa,4CACb3X,WAAY,sBACZ4X,aAAc,UAElB4Z,KAAK,mBACF7Z,YAAa,2CACb3X,WAAY,0BACZ4X,aAAc,UAEjB4Z,KAAK,uBACF7Z,YAAa,+CACb3X,WAAY,8BACZ4X,aAAc,UAEjB4Z,KAAK,2BACF7Z,YAAa,+CACb3X,WAAY,8BACZ4X,aAAc,UAEjB4Z,KAAK,oBACF7Z,YAAa,4CACb3X,WAAY,2BACZ4X,aAAc,UAEjB4Z,KAAK,wBACF7Z,YAAa,gDACb3X,WAAY,+BACZ4X,aAAc,UAEjB4Z,KAAK,4BACF7Z,YAAa,gDACb3X,WAAY,+BACZ4X,aAAc,UAEhBia,WACGC,WAAY,MAvKpBT,EAAYrzB,SAAW,kBAzCvBS,QACGC,OAAO,SACPT,OAAOozB,MAmNd5yB,QAAQC,OAAO,SAAS0yB,KAAK,iBAAkB,SAAS/G,GAAiBA,EAAesD,IAAI,2BAA2B,kXACvHtD,EAAesD,IAAI,qCAAqC,ivBACxDtD,EAAesD,IAAI,mCAAmC,upDACtDtD,EAAesD,IAAI,uCAAuC,spHAC1DtD,EAAesD,IAAI,qCAAqC;AACxDtD,EAAesD,IAAI,yCAAyC,8iYAC5DtD,EAAesD,IAAI,iDAAiD,y+DACpEtD,EAAesD,IAAI,yCAAyC,62LAC5DtD,EAAesD,IAAI,uCAAuC,+7EAC1DtD,EAAesD,IAAI,uCAAuC,o+DAC1DtD,EAAesD,IAAI,8CAA8C,spBACjEtD,EAAesD,IAAI,oCAAoC,+nHACvDtD,EAAesD,IAAI,iDAAiD,+QACpEtD,EAAesD,IAAI,yCAAyC,yYAC5DtD,EAAesD,IAAI,6CAA6C,gnBAChEtD,EAAesD,IAAI,2CAA2C;AAC9DtD,EAAesD,IAAI,kDAAkD,srDACrEtD,EAAesD,IAAI,wCAAwC,u8FAC3DtD,EAAesD,IAAI,mDAAmD,w3GACtEtD,EAAesD,IAAI,kDAAkD,49GACrEtD,EAAesD,IAAI,wDAAwD,kuPAC3EtD,EAAesD,IAAI,oDAAoD,+8DACvEtD,EAAesD,IAAI,+CAA+C,g9DAClEtD,EAAesD,IAAI,4CAA4C;AAC/DtD,EAAesD,IAAI,2CAA2C,2YAC9DtD,EAAesD,IAAI,+CAA+C,yrCAClEtD,EAAesD,IAAI,4CAA4C,4YAC/DtD,EAAesD,IAAI,gDAAgD,6tDACnEtD,EAAesD,IAAI,uCAAuC,8qBAC1DtD,EAAesD,IAAI,2CAA2C,ulBAC9DtD,EAAesD,IAAI,2CAA2C,8qEAC9DtD,EAAesD,IAAI,wCAAwC,mSAC3DtD,EAAesD,IAAI,2CAA2C,0wKAC9DtD,EAAesD,IAAI,wCAAwC,s7EAC3DtD,EAAesD,IAAI,8CAA8C,4QACjEtD,EAAesD,IAAI,yDAAyD,o+DAC5EtD,EAAesD,IAAI,gEAAgE","file":"scripts/app.js","sourcesContent":["(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos', ['ui-notification', 'ngCookies', 'ngRoute', 'ui.grid', 'ui.grid.edit', 'ui.grid.rowEdit', 'ui.grid.autoResize', 'ui.grid.selection', 'ui.grid.pagination', 'ngSanitize', 'ui.grid.exporter', '720kb.datepicker', 'ngFileSaver', 'dndLists'])\r\n .config(config)\r\n\r\n /** @ngInject */\r\n function config($httpProvider, NotificationProvider) {\r\n $httpProvider.interceptors.push('AuthFactory');\r\n NotificationProvider.setOptions({\r\n startTop: 50,\r\n startRight: 60\r\n });\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('SearchuserresultsController', searchuserresultsController);\r\n /** @ngInject */\r\n function searchuserresultsController($location, $log, nbPosApi, $rootScope) {\r\n var vm = this;\r\n vm.isLoading = true;\r\n var query = $location.search();\r\n vm.selectUser = function (user) {\r\n $log.log(user); \r\n $rootScope.$broadcast('order-for', { email: user.Email, userid: user.Id });\r\n $location.path(\"shipping\");\r\n };\r\n nbPosApi.findUsers(query.e ? query.e : \"\", query.p ? query.p : \"\", query.f ? query.f : \"\", query.l ? query.l : \"\", query.c ? query.c : \"\", query.o ? true : false)\r\n .then(function (response) {\r\n vm.searchResults = response.data;\r\n vm.isLoading = false;\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n }\r\n})();\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('SearchuserController', searchuserController);\r\n /** @ngInject */\r\n function searchuserController($log, $location) {\r\n var vm = this\r\n vm.searchUser = function () {\r\n $log.log(vm);\r\n if (vm.email) {\r\n $location.search(\"e\", vm.email);\r\n }\r\n if (vm.phone) {\r\n $location.search(\"p\", vm.phone);\r\n }\r\n if (vm.firstName) {\r\n $location.search(\"f\", vm.firstName);\r\n }\r\n if (vm.lastName) {\r\n $location.search(\"l\", vm.lastName);\r\n }\r\n if (vm.company) {\r\n $location.search(\"c\", vm.company);\r\n }\r\n if (vm.noLoginOnly) {\r\n $location.search(\"o\", true);\r\n }\r\n $location.path(\"searchuserresults\");\r\n }\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('adminUsersController', adminUsersController);\r\n /** @ngInject */\r\n function adminUsersController($log, nbPosApi, $location) {\r\n var vm = this;\r\n vm.showResults = false; \r\n vm.selectedRow = [];\r\n var storedSearchParams = localStorage.getItem('userSearchParams'); \r\n \r\n if(storedSearchParams){ \r\n var params = angular.fromJson(storedSearchParams); \r\n vm.Query = { \r\n email: params['email'], \r\n phone: params['phone'], \r\n firstName: params['firstName'], \r\n lastName: params['lastName'], \r\n company: params['company'],\r\n noLoginOnly: params['noLoginOnly'] ? params['noLoginOnly'] : '',\r\n activeOnly: params['activeOnly'] ? params['activeOnly'] : '' \r\n } \r\n nbPosApi.findUsers(vm.Query.email ? vm.Query.email : \"\",\r\n vm.Query.phone ? vm.Query.phone : \"\",\r\n vm.Query.firstName ? vm.Query.firstName : \"\",\r\n vm.Query.lastName ? vm.Query.lastName : \"\",\r\n vm.Query.company ? vm.Query.company : \"\",\r\n (vm.Query.noLoginOnly && vm.Query.noLoginOnly != undefined) ? true : false,\r\n (vm.Query.activeOnly && vm.Query.activeOnly != undefined) ? true : false).then(function (response) { \r\n vm.gridOptions.data = response.data;\r\n vm.showResults = true; \r\n }); \r\n }\r\n else { \r\n vm.Query = {\r\n email: '', \r\n phone: '', \r\n firstName: '', \r\n lastName: '', \r\n company: '',\r\n noLoginOnly: '',\r\n activeOnly:'' \r\n }\r\n }\r\n\r\n vm.gridOptions = {\r\n multiSelect: false,\r\n enableFullRowSelection: true,\r\n selectedItems: vm.selectedRow,\r\n enableRowHeaderSelection: false,\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n vm.gridApi.selection.on.rowSelectionChanged(null, function (row) {\r\n var id = row.entity.Id;\r\n $location.path(\"/admin/userEdit/\" + id);\r\n });\r\n },\r\n columnDefs: [\r\n { name: 'Email', displayName: 'Email', width: 244 },\r\n { name: 'FirstName', displayName: 'First Name', width: 150 },\r\n { name: 'LastName', displayName: 'Last Name', width: 150 },\r\n { name: 'Active', displayName: 'Active', width: 50 },\r\n { name: 'Company', displayName: 'Company', width: 189 },\r\n { name: 'Phone', displayName: 'Phone', width: 150 }\r\n ]\r\n };\r\n \r\n vm.goToCreateForm = function () {\r\n $location.path(\"/admin/userEdit\");\r\n };\r\n vm.getUsers = function () { \r\n localStorage.setItem(\"userSearchParams\", angular.toJson(vm.Query));\r\n nbPosApi.findUsers(vm.Query.email ? vm.Query.email : \"\",\r\n vm.Query.phone ? vm.Query.phone : \"\",\r\n vm.Query.firstName ? vm.Query.firstName : \"\",\r\n vm.Query.lastName ? vm.Query.lastName : \"\",\r\n vm.Query.company ? vm.Query.company : \"\",\r\n (vm.Query.noLoginOnly && vm.Query.noLoginOnly != undefined) ? true : false,\r\n (vm.Query.activeOnly && vm.Query.activeOnly != undefined) ? true : false)\r\n .then(function (response) {\r\n vm.gridOptions.data = response.data; \r\n vm.showResults = true; \r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n }\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('adminUserEditController', adminUserEditController);\r\n /** @ngInject */\r\n function adminUserEditController($log, nbPosApi, $routeParams, $location, Notification) {\r\n var vm = this;\r\n vm.userId = $routeParams.id;\r\n vm.isUserNoLogin = '';\r\n vm.inEditMode = vm.userId != '' && vm.userId != undefined;\r\n vm.btnAction = vm.inEditMode ? 'Save' : 'Submit';\r\n vm.heading = vm.inEditMode ? 'Edit' : 'Create New';\r\n vm.processUserData = function () { \r\n var data = {\r\n UserId: parseInt(vm.userId) ? parseInt(vm.userId) : 0,\r\n FirstName: vm.firstName,\r\n LastName: vm.lastName,\r\n Company: vm.company,\r\n Title: null,\r\n Address1: vm.address,\r\n Address2: null,\r\n City: vm.city,\r\n StateCode: vm.State,\r\n PostalCode: vm.zip,\r\n Phone: vm.phone,\r\n CountryId: vm.countryId,\r\n AddressTypeId: vm.addressType,\r\n Active: vm.active ? vm.active : true,\r\n AppSettings: vm.appSettings ? vm.appSettings : [{ \"KeyName\": \"\", \"KeyValueC\": \"\", \"KeyValueI\": \"\", \"KeyValueD\": \"\" }],\r\n ProductAuthorizations: vm.userAuthorizedBrands ? vm.userAuthorizedBrands : [{\"ProductId\": 0,\"Authorized\":true}]\r\n },\r\n promise = vm.inEditMode ? nbPosApi.updateUser(vm.userId, data) : nbPosApi.createUser(data);\r\n promise.then(function () {\r\n Notification.success({ message: \"User list updated\" });\r\n vm.cancel();\r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error({ message: \"Failed to update Users\" });\r\n });\r\n };\r\n\r\n if (vm.inEditMode) { \r\n nbPosApi.getUserById(vm.userId)\r\n .then(function (response) {\r\n vm.isUserNoLogin = response.data.NoLogin;\r\n vm.email = response.data.Email;\r\n vm.firstName = response.data.FirstName;\r\n vm.lastName = response.data.LastName;\r\n vm.company = response.data.Company;\r\n if (response.data.Addresses.length > 0) {\r\n vm.address = response.data.Addresses[0].Address1;\r\n vm.city = response.data.Addresses[0].City;\r\n vm.State = response.data.Addresses[0].StateCode;\r\n vm.zip = response.data.Addresses[0].PostalCode;\r\n vm.country = response.data.Addresses[0].CountryName;\r\n vm.countryId = response.data.Addresses[0].Country;\r\n vm.addressType = response.data.Addresses[0].AddressTypeId;\r\n }\r\n vm.phone = response.data.Phone;\r\n vm.active = response.data.Active;\r\n vm.appSettings = response.data.AppSettings;\r\n vm.userAuthorizedBrands = response.data.ProductAuthorizations;\r\n nbPosApi.getBrands().then(function (availableBrands) { \r\n vm.nbProducts = availableBrands.data;\r\n });\r\n }, function (response) {\r\n $log.error(response); \r\n });\r\n vm.isBrandAuthorized = function (prodId) {\r\n if (prodId != '' && prodId != undefined && vm.userAuthorizedBrands) {\r\n for (var x = 0; x < vm.userAuthorizedBrands.length; x++) {\r\n if (prodId === vm.userAuthorizedBrands[x].ProductId && vm.userAuthorizedBrands[x].Authorized) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n } \r\n }\r\n else {\r\n vm.hideCheckBoxes = true;\r\n vm.isUserNoLogin = true;\r\n } \r\n vm.cancel = function () {\r\n $location.path(\"/admin/users\");\r\n };\r\n var loadProductTypes = function () {\r\n nbPosApi.getBrands().then(function (availableBrands) { \r\n vm.nbProducts = availableBrands.data;\r\n });\r\n }\r\n var loadAddressTypes = function () {\r\n nbPosApi.getAddressTypes().then(function (response) {\r\n vm.AddressType = response.data;\r\n });\r\n }\r\n var loadCountries = function () {\r\n nbPosApi.loadCountries().then(function (response) {\r\n vm.Countries = response.data;\r\n });\r\n }\r\n var loadUSAState = function () {\r\n nbPosApi.loadUSAState().then(function (response) {\r\n vm.States = response.data;\r\n });\r\n } \r\n loadProductTypes(); \r\n loadAddressTypes();\r\n loadCountries();\r\n loadUSAState();\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('adminTypesController', adminTypesController);\r\n /** @ngInject */\r\n function adminTypesController($log, $location, nbPosApi) {\r\n var vm = this;\r\n vm.heading = \"Item Types\";\r\n vm.gridOptions = {\r\n enableFullRowSelection: true,\r\n enableRowHeaderSelection: false,\r\n multiSelect: false,\r\n columnDefs: [\r\n { name: 'Code', displayName: 'Item Type', width: 100 },\r\n { name: 'Description', displayName: 'Description', width: 365, cellTemplate: '
' },\r\n { name: 'Sequence', displayName: 'Seq', width: 55 },\r\n { name: 'IsVisible', displayName: 'Display', width: 35 },\r\n { name: 'ShowItemStatus', displayName: 'Show Item Status', width: 155 },\r\n //{ name: 'IsVisible', displayName: 'Display', width: 95 },\r\n { name: 'DefaultSupplierId', displayName: 'Default Supplier', width: 173 }\r\n ],\r\n onRegisterApi: function (gridApi) {\r\n gridApi.selection.on.rowSelectionChanged(null, function (row) {\r\n var id = row.entity.Id;\r\n $location.path(\"/admin/itemtypesEdit/\" + id);\r\n });\r\n }\r\n };\r\n\r\n vm.goToCreateForm = function () {\r\n $location.path(\"/admin/itemtypesEdit\");\r\n }\r\n nbPosApi.getBrands().then(function (response) {\r\n vm.gridOptions.data = response.data;\r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error({ message: response.statusText });\r\n });\r\n }\r\n})();\r\n\r\n\n'use strict';\r\nangular\r\n .module('nbPos')\r\n .controller('adminTypeEditController', adminTypeEditController)\r\n .directive('ngConfirmClick', clickConfirmDirective);\r\n\r\n/** @ngInject */\r\nfunction adminTypeEditController($log, $location, nbPosApi, $routeParams, Notification) {\r\n var vm = this;\r\n vm.itemTypeId = $routeParams.itemTypeId ? $routeParams.itemTypeId : 0;\r\n vm.inEditMode = vm.itemTypeId && vm.itemTypeId != '' && vm.itemTypeId != undefined;\r\n vm.btnAction = vm.inEditMode ? 'Save' : 'Submit';\r\n vm.heading = vm.inEditMode ? 'Edit' : 'Create New';\r\n\r\n vm.processUserData = function () {\r\n var data = {\r\n Code: vm.itemType,\r\n Description: vm.description,\r\n Sequence: parseInt(vm.sequence),\r\n IsVisible: vm.isVisible,\r\n ShowItemStatus: vm.showItemStatus,\r\n ImageId: 0,\r\n DefaultSupplierId: vm.Suppliers\r\n },\r\n promise = vm.inEditMode ? nbPosApi.updateBrand(vm.itemTypeId, data) : nbPosApi.createBrand(data);\r\n promise.then(function () {\r\n Notification.success({ message: \"Item List Updated\" });\r\n vm.cancel();\r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error({ message: \"Item not Updated\" });\r\n });\r\n };\r\n vm.cancel = function () {\r\n $location.path(\"/admin/itemtypes\");\r\n };\r\n vm.deleteBrand = function () {\r\n nbPosApi.deleteBrand(vm.itemTypeId).then(function () {\r\n Notification.success({ message: \"Item Deleted\" });\r\n vm.cancel();\r\n }, function () {\r\n Notification.error({ message: \"Item not Deleted\" });\r\n });\r\n }\r\n nbPosApi.getSuppliers().then(function (response) {\r\n vm.suppliers = response.data;\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n\r\n if (vm.inEditMode) { \r\n nbPosApi.getBrand(vm.itemTypeId).then(function (response) {\r\n vm.itemType = response.data.Code;\r\n vm.description = response.data.Description;\r\n vm.sequence = response.data.Sequence;\r\n vm.isVisible = response.data.IsVisible;\r\n vm.showItemStatus = response.data.ShowItemStatus;\r\n vm.imageId = response.data.ImageId;\r\n vm.Suppliers = response.data.DefaultSupplierId;\r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error({ message: response.statusText });\r\n });\r\n }\r\n \r\n}\r\n\r\n/** @ngInject */\r\nfunction clickConfirmDirective($window) {\r\n return {\r\n link: function (scope, element, attr) {\r\n var msg = attr.ngConfirmClick || \"Are you sure?\";\r\n var clickAction = attr.confirmedClick;\r\n element.bind('click', function () {\r\n if ($window.confirm(msg)) {\r\n scope.$eval(clickAction)\r\n }\r\n });\r\n }\r\n }\r\n}\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('TagsEditController', TagsEditController);\r\n /** @ngInject */\r\n function TagsEditController($log, nbPosApi, $routeParams, $location, Notification ) {\r\n var vm = this;\r\n vm.tagId = $routeParams.id; \r\n\r\n vm.getTagById = function(){\r\n nbPosApi.getTagById(vm.tagId)\r\n .then(function (response) { \r\n vm.tag = response.data.Name; \r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error({ message: \"Tag not found\"});\r\n });\r\n } \r\n vm.updateTag = function(){ \r\n nbPosApi.updateTag(vm.tagId, vm.tag)\r\n .then(function () { \r\n Notification.success({ message: \"Tag updated\"});\r\n $location.path(\"/tags\");\r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error({ message: \"Tag not updated\"});\r\n });\r\n } \r\n \r\n vm.cancel = function () {\r\n $location.path(\"/tags\");\r\n }; \r\n vm.getTagById();\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('TagsController', TagsController);\r\n /** @ngInject */\r\n function TagsController($log, nbPosApi, $location, Notification) {\r\n var vm = this;\r\n vm.showResults = false; \r\n vm.selectedRow = []; \r\n var removeTemplate = '
X';\r\n var idLinkTemplate = '
{{row.entity.Id}}
';\r\n\r\n vm.gridOptions = {\r\n multiSelect: false,\r\n enableFullRowSelection: false, \r\n enableRowHeaderSelection: false,\r\n selectedItems: vm.selectedRow,\r\n \r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi; \r\n },\r\n columnDefs: [\r\n { name: 'remove', displayName: 'Delete', width: 75, cellTemplate: removeTemplate },\r\n { name: 'Id', displayName: 'Id', cellTemplate: idLinkTemplate },\r\n { name: 'Name', displayName: 'Name' }\r\n ]\r\n }; \r\n vm.goToCreateForm = function () {\r\n $location.path(\"/tags\");\r\n };\r\n vm.getTags = function () { \r\n nbPosApi.getTags()\r\n .then(function (response) { \r\n vm.gridOptions.data = response.data; \r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n }\r\n vm.addTag = function () { \r\n $log.log(\"tag\",vm.tag);\r\n if(!vm.tag || vm.tag.length > 15) Notification.error({ message: \"Tag must be 15 characters or less.\" });\r\n nbPosApi.createTag(vm.tag)\r\n .then(function () {\r\n Notification.success({ message: \"Tag Added\" });\r\n vm.getTags();\r\n vm.tag = null;\r\n }, function (response) {\r\n Notification.error({ message: \"Could not add tag\" });\r\n $log.error(response);\r\n });\r\n }\r\n vm.removeRow = function(row) { \r\n if(confirm('Permanently delete tag ' + row.entity[\"Name\"] + '?')){ \r\n nbPosApi.deleteTag(row.entity.Id).then(function (response) { \r\n if (response && response.data != false) {\r\n var index = vm.gridOptions.data.indexOf(row.entity);\r\n vm.gridOptions.data.splice(index, 1); \r\n Notification.success({ message: \"Tag Deleted\" }); \r\n }\r\n else{\r\n Notification.error({ message: \"Could not delete tag, it is being used by an order.\" });\r\n } \r\n $location.path('tags');\r\n }, function (error) {\r\n $log.error(error);\r\n Notification.error({ message: \"Could not delete tag\" });\r\n });\r\n } \r\n }\r\n vm.getTags();\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('adminSuppliersEditController', suppliersEditController);\r\n /** @ngInject */\r\n function suppliersEditController($log, nbPosApi, $routeParams, $location, Notification) {\r\n var vm = this;\r\n vm.supplierId = $routeParams.id; \r\n vm.inEditMode = vm.supplierId != '' && vm.supplierId != undefined;\r\n vm.btnAction = vm.inEditMode ? 'Save' : 'Submit';\r\n vm.heading = vm.inEditMode ? 'Edit' : 'Create New'; \r\n vm.processData = function () {\r\n var data = {\r\n Name: vm.Name,\r\n EmailSubject: vm.EmailSubject,\r\n EmailTo: vm.EmailTo,\r\n EmailCc: vm.EmailCc,\r\n EmailBcc: vm.EmailBcc\r\n },\r\n promise = vm.inEditMode ? nbPosApi.updateSupplier(vm.supplierId, data) : nbPosApi.createSupplier(data);\r\n promise.then(function () {\r\n Notification.success({ message: \"Suppliers list update\" });\r\n vm.cancel();\r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error({ message: \"Failed to update Suppliers\" });\r\n });\r\n };\r\n vm.cancel = function () {\r\n $location.path(\"/admin/suppliers\");\r\n };\r\n var loadSupplierData = function () {\r\n var supplierProm = nbPosApi.getSupplierById(vm.supplierId);\r\n supplierProm.then(function (response) {\r\n vm.Name = response.data.Name;\r\n vm.EmailSubject = response.data.EmailSubject;\r\n vm.EmailTo = response.data.EmailTo;\r\n vm.EmailCc = response.data.EmailCc;\r\n vm.EmailBcc = response.data.EmailBcc;\r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error({ message: \"Failed to retrieve data for supplier: \" + vm.supplierId });\r\n });\r\n }\r\n if (vm.inEditMode) {\r\n loadSupplierData();\r\n }\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('adminSuppliersController', SuppliersController);\r\n /** @ngInject */\r\n function SuppliersController($log, nbPosApi, $location) {\r\n var vm = this;\r\n vm.heading = \"Suppliers\";\r\n vm.selectedRow = [];\r\n vm.gridOptions = {\r\n multiSelect: false,\r\n enableFullRowSelection: true,\r\n selectedItems: vm.selectedRow,\r\n enableRowHeaderSelection: false,\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n vm.gridApi.selection.on.rowSelectionChanged(null, function (row) {\r\n var id = row.entity.Id;\r\n $location.path(\"admin/suppliersEdit/\" + id);\r\n });\r\n },\r\n columnDefs : [\r\n { name: 'Name', displayName: 'Supplier Name', width: 180 },\r\n { name: 'EmailSubject', displayName: 'Email Subject', width: 300 },\r\n { name: 'EmailTo', displayName: 'Email To', width: 260 },\r\n { name: 'EmailCc', displayName: 'Email cc' }\r\n ]\r\n };\r\n \r\n vm.goToCreateForm = function () {\r\n $location.path(\"admin/suppliersEdit\");\r\n };\r\n nbPosApi.getSuppliers().then(function (response) {\r\n vm.gridOptions.data = response.data;\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('adminShippersEditController', shippersEditController);\r\n /** @ngInject */\r\n function shippersEditController($log, nbPosApi, $routeParams, $location, Notification) {\r\n var vm = this;\r\n vm.shipperId = $routeParams.id; \r\n vm.inEditMode = vm.shipperId && vm.shipperId != ''; \r\n vm.btnAction = vm.inEditMode ? 'Save' : 'Submit';\r\n vm.heading = vm.inEditMode ? 'Edit' : 'Create New'; \r\n vm.processData = function () {\r\n var data = {\r\n Name: vm.Name,\r\n TrackingLink: vm.TrackingLink,\r\n Sequence: parseInt(vm.Sequence,10)\r\n },\r\n promise = vm.inEditMode ? nbPosApi.updateShipper(vm.shipperId, data) : nbPosApi.createShipper(data);\r\n promise.then(function () {\r\n Notification.success({ message: \"Shippers list update\" });\r\n vm.cancel();\r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error({ message: \"Failed to update Shippers\" });\r\n });\r\n };\r\n vm.cancel = function () {\r\n $location.path(\"/admin/shippers\");\r\n };\r\n var loadShipperData = function () {\r\n nbPosApi.getShipperById(vm.shipperId)\r\n .then(function (response) {\r\n vm.Name = response.data.Name;\r\n vm.TrackingLink = response.data.TrackingLink;\r\n vm.Sequence = response.data.Sequence;\r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error({ message: \"Failed to retrieve data for shipper: \" + vm.shipperId });\r\n }); \r\n }\r\n if (vm.inEditMode) {\r\n loadShipperData();\r\n }\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('adminShippersController', shippersController);\r\n /** @ngInject */\r\n function shippersController($log, nbPosApi, $location) {\r\n var vm = this;\r\n vm.heading = \"Shippers\";\r\n vm.selectedRow = [];\r\n vm.gridOptions = {\r\n multiSelect : false,\r\n enableFullRowSelection : true,\r\n selectedItems : vm.selectedRow,\r\n enableRowHeaderSelection: false,\r\n onRegisterApi : function (gridApi) {\r\n vm.gridApi = gridApi;\r\n vm.gridApi.selection.on.rowSelectionChanged(null, function (row) {\r\n var id = row.entity.Id;\r\n $location.path(\"admin/shippersEdit/\" + id);\r\n });\r\n },\r\n columnDefs : [\r\n { name: 'Name', displayName: 'Shipper Name', width:200 },\r\n { name: 'Sequence', displayName: 'Seq', width: 60 },\r\n { name: 'TrackingLink', displayName: 'Tracking Link' }\r\n ]\r\n }; \r\n\r\n vm.goToCreateForm = function () {\r\n $location.path(\"admin/shippersEdit\");\r\n };\r\n nbPosApi.getShippers().then(function (response) {\r\n vm.gridOptions.data = response.data;\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('reportUsersController', reportUsersController);\r\n /** @ngInject */\r\n function reportUsersController($log, nbPosApi, $window) {\r\n var vm = this;\r\n vm.heading = \"User Report\";\r\n vm.allowExport = false;\r\n vm.gridOptions = {\r\n //exporterMenuPdf: false,\r\n enableGridMenu: true,\r\n enableSelectAll: true,\r\n exporterCsvFilename: vm.heading +'.csv',\r\n exporterCsvLinkElement: angular.element($window.document.querySelectorAll(\".custom-csv-link-location\")), \r\n multiSelect: true,\r\n \r\n enableFullRowSelection: true,\r\n enableRowHeaderSelection: false,\r\n enablePagination: true,\r\n enablePaginationControls: true,\r\n paginationPageSizes: [10, 20, 30],\r\n paginationPageSize: 10,\r\n columnDefs: [\r\n { name: 'ID', displayName: 'Id', width: 100 },\r\n { name: 'Email', displayName: 'Email', width: 150 },\r\n { name: 'Level', displayName: 'Level', width: 100 },\r\n { name: 'FirstName', displayName: 'First Name', width: 150 },\r\n { name: 'LastName', displayName: 'Last Name', width: 150 },\r\n { name: 'Company', displayName: 'Company', width: 150 },\r\n { name: 'Title', displayName: 'Title', width: 150 },\r\n { name: 'Address1', displayName: 'Address', width: 200 },\r\n { name: 'City', displayName: 'City', width: 100 },\r\n { name: 'State', displayName: 'State', width: 100 },\r\n { name: 'Zip', displayName: 'Zip', width: 100 },\r\n { name: 'CountryCode', displayName: 'Country Code', width: 150 },\r\n { name: 'AddressType', displayName: 'Address Type', width: 150 },\r\n { name: 'Phone', displayName: 'Phone', width: 150 },\r\n { name: 'Distributor', displayName: 'Distributor', width: 100 },\r\n { name: 'ContactName', displayName: 'Contact Name', width: 150 },\r\n { name: 'ContactPhone', displayName: 'Contact Phone', width: 150 },\r\n { name: 'ProgramCusotmer', displayName: 'Program Cusotmer', width: 200, cellTemplate: '
' },\r\n { name: 'Auth_AR', displayName: 'Auth_AR', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_BA', displayName: 'Auth_BA', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_BC', displayName: 'Auth_BC', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_CAB', displayName: 'Auth_CAB', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_CHB', displayName: 'Auth_CHB', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_GB', displayName: 'Auth_GB', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_IV', displayName: 'Auth_IV', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_KCS', displayName: 'Auth_KCS', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_NB', displayName: 'Auth_NB', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_NBL', displayName: 'Auth_NBL', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_NL', displayName: 'Auth_NL', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_NS', displayName: 'Auth_NS', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_NW', displayName: 'Auth_NW', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_NNM', displayName: 'Auth_NNM', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_PB', displayName: 'Auth_PB', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_PR', displayName: 'Auth_PR', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_TS', displayName: 'Auth_TS', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_VM', displayName: 'Auth_VM', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_VMV', displayName: 'Auth_VMV', width: 100, cellTemplate: '
' },\r\n { name: 'Auth_VN', displayName: 'Auth_VN', width: 100, cellTemplate: '
' },\r\n { name: 'Active', displayName: 'Active', width: 100, cellTemplate: '
' },\r\n { name: 'CanOrderForOthers', displayName: 'Can Order For Others', width: 200, cellTemplate: '
' },\r\n { name: 'POSAdmin', displayName: 'POS Admin', width: 100, cellTemplate: '
' },\r\n { name: 'LastLoginDT', displayName: 'Last Login', width: 100 },\r\n { name: 'Location', displayName: 'Location', width: 100 },\r\n { name: 'FieldRepID', displayName: 'Field Rep ID', width: 150 },\r\n { name: 'FieldRepFirstName', displayName: 'Field Rep First Name', width: 200 },\r\n { name: 'FieldRepLastName', displayName: 'Field Rep Last Name', width: 200 },\r\n { name: 'FieldRepEmail', displayName: 'Field Rep Email', width: 200 }\r\n ],\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n }\r\n }; \r\n nbPosApi.getUserReport().then(function (response) {\r\n $log.log(vm.gridOptions.columnDefs);\r\n vm.gridOptions.data = response.data;\r\n vm.allowExport = true;\r\n }, function (response) {\r\n $log.error(response);\r\n }); \r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('reportPOSController', reportPOSController);\r\n /** @ngInject */\r\n function reportPOSController($routeParams, $log, nbPosApi, $location, $filter, $scope, $document, $window, Notification, FileSaver) {\r\n var vm = this,\r\n format = 'yyyy-MM-dd',\r\n today = new Date(),\r\n twoWeeksAgo = new Date();\r\n twoWeeksAgo.setDate(today.getDate() - 14);\r\n vm.heading = \"POS Movement Summary Report\";\r\n vm.showGrid = false;\r\n vm.showMessage = false;\r\n vm.startDate = $filter('date')(twoWeeksAgo, format);\r\n vm.endDate = $filter('date')(today, format);\r\n vm.DateRange = {\r\n start: $filter('date')(vm.startDate, \"yyyy-MM-dd\"),\r\n end: $filter('date')(vm.endDate, \"yyyy-MM-dd\")\r\n }; \r\n vm.itemsReturned = false;\r\n vm.brandDescLabels = [];\r\n vm.brandDescQuant = [];\r\n vm.gridOptions = {\r\n data: [], \r\n exporterMenuPdf: false,\r\n enableGridMenu: true,\r\n enableSelectAll: true,\r\n exporterCsvFilename: vm.heading + '.csv',\r\n exporterCsvLinkElement: angular.element($window.document.querySelectorAll(\".custom-csv-link-location\")),\r\n multiSelect: true,\r\n enableFullRowSelection: true,\r\n enableRowHeaderSelection: false,\r\n enablePagination: true,\r\n enablePaginationControls: true,\r\n paginationPageSizes: [10, 20, 30],\r\n paginationPageSize: 10,\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n }\r\n }\r\n nbPosApi.getBrands().then(function (response) {\r\n vm.brands = response.data;\r\n vm.brandDescription = {};\r\n angular.forEach(vm.brands, function (value) {\r\n vm.brandDescription[value.Code] = value.Description;\r\n });\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n\r\n vm.selectedBrandLabels = [];\r\n vm.selectedBrandQuantities = [];\r\n\r\n $scope.$watch('selectedBrandLabels', function (nowSelected) {\r\n vm.selectedBrandsForLabels = [];\r\n\r\n if (!nowSelected) {\r\n return;\r\n }\r\n angular.forEach(nowSelected, function (val) {\r\n vm.selectedBrandsForLabels.push(val.id.toString());\r\n });\r\n });\r\n $scope.$watch('selectedBrandQuantities', function (nowSelected) {\r\n vm.selectedBrandsForQuantities = [];\r\n\r\n if (!nowSelected) {\r\n return;\r\n }\r\n angular.forEach(nowSelected, function (val) {\r\n vm.selectedBrandsForQuantities.push(val.id.toString());\r\n });\r\n });\r\n\r\n vm.getCleanBrandDescription = function (brandCode) {\r\n return vm.brandDescription[brandCode].replace(/.*<\\/sup>/g, ' ');\r\n }\r\n\r\n vm.buildReport = function () {\r\n var start = $filter('date')(vm.startDate, \"yyyy-MM-dd\"),\r\n end = $filter('date')(vm.endDate, \"yyyy-MM-dd\");\r\n nbPosApi.getPOSReport(start, end, vm.selectedBrandsForLabels, vm.selectedBrandsForQuantities)\r\n .then(prepareReportData, reportError);\r\n }\r\n\r\n vm.generateReport = function () {\r\n var reportHtml = \"\" + $document[0].getElementById(\"pdf-report\").innerHTML.replace(//g, \"\").replace(/\\s+/g, \" \") + \"\",\r\n data = {\r\n Filename: \"MovementSummary.pdf\",\r\n Report: reportHtml,\r\n Engine: 1,\r\n Landscape: true\r\n };\r\n $log.log(data);\r\n nbPosApi.GeneratePdf(data).then(function (response) {\r\n $log.log(response);\r\n FileSaver.saveAs(response.data, data.Filename);\r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error(\"Unable to generate report.\");\r\n });\r\n }\r\n\r\n function prepareReportData(response) {\r\n vm.itemsReturned = true;\r\n var arrayData = response.data.pop(0),\r\n coldefs = buildColumnDefinitions(arrayData);\r\n vm.gridOptions.columnDefs = coldefs;\r\n vm.reportData = response.data; \r\n vm.reportDataAvg = { WeekEnding: \"Average\" };\r\n if(vm.reportData.length > 0)\r\n {\r\n $log.log(vm.reportData);\r\n var columnNames = Object.getOwnPropertyNames(vm.reportData[0]);\r\n angular.forEach(columnNames, function (columnName) {\r\n if (columnName !== 'WeekEnding') {\r\n $log.log(columnName);\r\n var runningTotal = 0;\r\n angular.forEach(vm.reportData, function (reportRow) {\r\n runningTotal += reportRow[columnName];\r\n });\r\n vm.reportDataAvg[columnName] = (runningTotal / vm.reportData.length).toFixed(2);\r\n }\r\n })\r\n vm.reportData.push(vm.reportDataAvg);\r\n vm.gridOptions.data = vm.reportData;\r\n vm.gridOptions.data = vm.reportData;\r\n vm.showDownload = true;\r\n vm.showGrid = true;\r\n vm.showMessage = false;\r\n } \r\n else {\r\n vm.showGrid = false;\r\n vm.showMessage = true;\r\n }\r\n }\r\n function reportError(response) {\r\n $log.error(response);\r\n }\r\n function buildColumnDefinitions(arrayData) {\r\n var columnDefinitions = [];\r\n for (var property in arrayData) {\r\n if (arrayData.hasOwnProperty(property)) {\r\n if (property.startsWith(\"NOrd_\")) {\r\n vm.brandDescQuant.push(property);\r\n }\r\n else if (property.startsWith(\"Qty_\")) {\r\n vm.brandDescLabels.push(property);\r\n }\r\n var colDef = { field: property, width: 200 };\r\n }\r\n columnDefinitions.push(colDef);\r\n }\r\n return columnDefinitions\r\n }\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('reportOrdersController', reportOrdersController);\r\n /** @ngInject */\r\n function reportOrdersController($routeParams, $log, nbPosApi, $location, $filter, $window) {\r\n var vm = this,\r\n format = 'yyyy-MM-dd',\r\n today = new Date(),\r\n twoWeeksAgo = new Date();\r\n vm.showGrid = false;\r\n vm.showMessage = false;\r\n twoWeeksAgo.setDate(today.getDate() - 14);\r\n vm.heading = \"Order Detail Report\";\r\n vm.startDate = $filter('date')(twoWeeksAgo, format);\r\n vm.endDate = $filter('date')(today, format);\r\n vm.DateRange = {\r\n start: $filter('date')(vm.startDate, \"yyyy-MM-dd\"),\r\n end: $filter('date')(vm.endDate, \"yyyy-MM-dd\")\r\n };\r\n\r\n vm.gridOptions = {\r\n exporterMenuPdf: false,\r\n enableGridMenu: true,\r\n enableSelectAll: true,\r\n exporterCsvFilename: vm.heading + '.csv',\r\n exporterCsvLinkElement: angular.element($window.document.querySelectorAll(\".custom-csv-link-location\")),\r\n multiSelect: true,\r\n enableFullRowSelection: true,\r\n enableRowHeaderSelection: false,\r\n enablePagination: true,\r\n enablePaginationControls: true,\r\n paginationPageSizes: [10, 20, 30],\r\n paginationPageSize: 10,\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n },\r\n columnDefs: [\r\n { name: 'Id', displayName: 'Id', width: 75 },\r\n { name: 'OrderId', displayName: 'Order Id', width: 100 },\r\n { name: 'SourceItemId', displayName: 'Item Id', width: 100 }, \r\n { name: 'ItemNumber', displayName: 'Item Number', width: 125 },\r\n { name: 'Description', displayName: 'Description', width: 300 },\r\n { name: 'Quantity', displayName: 'Quantity', width: 100 },\r\n { name: 'Type', displayName: 'Type', width: 80 },\r\n { name: 'SubType', SubType: 'City', width: 100 }\r\n ]\r\n }\r\n\r\n vm.getOrders = function () {\r\n var start = $filter('date')(vm.startDate, \"yyyy-MM-dd\"),\r\n end = $filter('date')(vm.endDate, \"yyyy-MM-dd\");\r\n nbPosApi.getOrderDetailsReport(start, end).then(function (response) { \r\n if (response.data.length > 0) {\r\n vm.gridOptions.data = response.data;\r\n vm.showGrid = true;\r\n vm.showMessage = false;\r\n }\r\n else {\r\n vm.showGrid = false;\r\n vm.showMessage = true;\r\n }\r\n $log.error(response);\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n } \r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('reportOrderHeaderController', reportOrderHeaderController);\r\n /** @ngInject */\r\n function reportOrderHeaderController($routeParams, $log, nbPosApi, $location, $filter, $window) {\r\n var vm = this, \r\n today = new Date(),\r\n format = 'yyyy-MM-dd',\r\n twoWeeksAgo = new Date();\r\n twoWeeksAgo.setDate(today.getDate() - 14);\r\n vm.heading = \"Order Header Report\";\r\n vm.showGrid = false;\r\n vm.showMessage = false;\r\n vm.startDate = $filter('date')(twoWeeksAgo, format);\r\n vm.endDate = $filter('date')(today, format);\r\n vm.DateRange = {\r\n start: $filter('date')(vm.startDate, \"yyyy-MM-dd\"),\r\n end: $filter('date')(vm.endDate, \"yyyy-MM-dd\")\r\n };\r\n \r\n vm.gridOptions = {\r\n exporterMenuPdf: false,\r\n enableGridMenu: true,\r\n enableSelectAll: true,\r\n exporterCsvFilename: vm.heading + '.csv',\r\n exporterCsvLinkElement: angular.element($window.document.querySelectorAll(\".custom-csv-link-location\")),\r\n multiSelect: true,\r\n enableFullRowSelection: true,\r\n enableRowHeaderSelection: false,\r\n enablePagination: true,\r\n enablePaginationControls: true,\r\n paginationPageSizes: [10, 20, 30],\r\n paginationPageSize: 10,\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n },\r\n columnDefs: [\r\n { name: 'OrderId', displayName: 'Id', width: 100 }, \r\n { name: 'FirstName', displayName: 'First Name', width: 150 },\r\n { name: 'LastName', displayName: 'Last Name', width: 150 },\r\n { name: 'Company', displayName: 'Company', width: 150 },\r\n { name: 'Title', displayName: 'Title', width: 150 },\r\n { name: 'Address1', displayName: 'Address', width: 200 },\r\n { name: 'City', displayName: 'City', width: 100 },\r\n { name: 'StateCode', displayName: 'State', width: 100 },\r\n { name: 'PostalCode', displayName: 'Zip', width: 100 },\r\n { name: 'Country', displayName: 'Country Code', width: 150 },\r\n { name: 'AddressType', displayName: 'Address Type', width: 150 },\r\n { name: 'Phone', displayName: 'Phone', width: 150 },\r\n { name: 'Email', displayName: 'Email', width: 150 },\r\n { name: 'CreatedOn', displayName: 'Date Submitted', width: 100 },\r\n { name: 'CustomerComment', displayName: 'Comment', width: 150 },\r\n { name: 'InternalComment', displayName: 'NBP Comment', width: 150 },\r\n { name: 'LastLoginDT', displayName: 'Last Login', width: 100 },\r\n { name: 'UserId', displayName: 'User Id', width: 100 },\r\n { name: 'EnteredById', displayName: 'Entered By Id', width: 150 },\r\n { name: 'Status', displayName: 'Order Status', width: 200 },\r\n { name: 'DateCompleted', displayName: 'Date Completed', width: 200 },\r\n { name: 'ShipperId', displayName: 'Shipper Id', width: 200 },\r\n { name: 'ShipperName', displayName: 'Shipper Name', width: 100 },\r\n { name: 'TrackingNumber', displayName: 'Tracking Number', width: 100 },\r\n { name: 'FieldRepId', displayName: 'Field Rep Id', width: 100 },\r\n { name: 'DateSubmitted_DO', displayName: 'Date Submitted DO', width: 100 }\r\n ]\r\n };\r\n\r\n vm.getOrders = function () {\r\n var start = $filter('date')(vm.startDate, \"yyyy-MM-dd\"),\r\n end = $filter('date')(vm.endDate, \"yyyy-MM-dd\");\r\n nbPosApi.getOrderHeaderReport(start, end).then(function (response) {\r\n if (response.data.length > 0) {\r\n vm.gridOptions.data = response.data;\r\n vm.showGrid = true;\r\n vm.showMessage = false;\r\n }\r\n else {\r\n vm.showGrid = false;\r\n vm.showMessage = true;\r\n }\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n }\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('itemsByWeekTypeDetailController', itemsByWeekTypeDetailController);\r\n /** @ngInject */\r\n function itemsByWeekTypeDetailController($routeParams, $log, nbPosApi, $location, $filter, $document, $window, Notification, FileSaver) { //Blob\r\n var vm = this,\r\n format = 'yyyy-MM-dd',\r\n today = new Date(),\r\n twoWeeksAgo = new Date();\r\n twoWeeksAgo.setDate(today.getDate() - 14);\r\n vm.startDate = $filter('date')(twoWeeksAgo, format);\r\n vm.endDate = $filter('date')(today, format);\r\n vm.heading = \"Items By Week/Type Detail\";\r\n vm.isBrandPicked = false;\r\n vm.showGrid = false;\r\n vm.showMessage = false;\r\n vm.gridOptions = {\r\n exporterMenuPdf: false,\r\n enableGridMenu: true,\r\n enableSelectAll: true,\r\n exporterCsvFilename: vm.heading + '.csv',\r\n exporterCsvLinkElement: angular.element($window.document.querySelectorAll(\".custom-csv-link-location\")),\r\n multiSelect: true,\r\n enableFullRowSelection: true,\r\n enableRowHeaderSelection: false,\r\n enablePagination: true,\r\n enablePaginationControls: true,\r\n paginationPageSizes: [10, 20, 30],\r\n paginationPageSize: 10,\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n },\r\n columnDefs: [\r\n { name: 'WeekStarting', displayName: 'Week Starting', width: 150 },\r\n { name: 'Company', displayName: 'Company', width: 170 },\r\n { name: 'Distributor', displayName: 'Distributor', width: 170 },\r\n { name: 'Description', displayName: 'Description', width: 170 },\r\n { name: 'City', displayName: 'City', width: 170 },\r\n { name: 'StateCode', displayName: 'State', width: 75 },\r\n { name: 'Address1', displayName: 'Address', width: 220 },\r\n { name: 'PostalCode', displayName: 'Zip', width: 80 },\r\n { name: 'Quantity', displayName: 'Quantity', width: 80 },\r\n { name: 'Email', displayName: 'Submitted By', width: 275 }\r\n ]\r\n };\r\n vm.getProductsByBrand = function () {\r\n getProductsByBrand(vm.selectedBrand);\r\n }\r\n vm.getProductsByProgram = function () {\r\n if (vm.selectedProgram == 'All')\r\n vm.products = vm.allProducts;\r\n else {\r\n var filteredArray = vm.allProducts.filter(function (obj) {\r\n return obj.SubType == vm.selectedProgram;\r\n });\r\n vm.products = filteredArray;\r\n }\r\n }\r\n nbPosApi.getBrands().then(function (response) {\r\n vm.brands = response.data;\r\n vm.brandDescription = {};\r\n angular.forEach(vm.brands, function (value) {\r\n vm.brandDescription[value.Id] = value.Description;\r\n });\r\n });\r\n vm.getCleanBrandDescription = function (brandCode) {\r\n return vm.brandDescription[brandCode].replace(/.*<\\/sup>/g, ' ');\r\n }\r\n var getProductsByBrand = function (brandId) {\r\n nbPosApi.getItemsByBrand(brandId).then(function (response) {\r\n vm.products = response.data.Items;\r\n vm.allProducts = response.data.Items;\r\n vm.programs = response.data.SubTypes;\r\n vm.programs.push(\"All\");\r\n vm.selectedProgram = \"All\";\r\n vm.isBrandPicked = true;\r\n });\r\n }\r\n\r\n\r\n\r\n vm.getItems = function () {\r\n var start = $filter('date')(vm.startDate, \"yyyy-MM-dd\"),\r\n end = $filter('date')(vm.endDate, \"yyyy-MM-dd\");\r\n nbPosApi.getItemByWeekTypeDetailReport(vm.selectedBrand, start, end, vm.selectedProgram, vm.shippedItemsOnly ? vm.shippedItemsOnly : false).then(function (response) {\r\n vm.reportData = response.data;\r\n vm.gridOptions.data = vm.reportData;\r\n $log.error(response);\r\n if (vm.reportData.length > 0) { \r\n vm.showGrid = true;\r\n vm.showMessage = false;\r\n }\r\n else {\r\n vm.showGrid = false;\r\n vm.showMessage = true;\r\n }\r\n\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n }\r\n vm.generateReport = function () {\r\n var reportHtml = \"\" + $document[0].getElementById(\"pdf-report\").innerHTML.replace(//g, \"\").replace(/\\s+/g, \" \") + \"\",\r\n data = {\r\n Filename: \"ItemDetails.pdf\",\r\n Report: reportHtml,\r\n Engine: 1,\r\n Landscape: false\r\n };\r\n $log.log(data);\r\n nbPosApi.GeneratePdf(data).then(function (response) {\r\n $log.log(response);\r\n FileSaver.saveAs(response.data, data.Filename);\r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error(\"Unable to generate report.\");\r\n });\r\n }\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('itemsByWeekTypeController', itemsByWeekTypeController);\r\n /** @ngInject */\r\n function itemsByWeekTypeController($routeParams, $log, nbPosApi, $location, $filter, $window) {\r\n var vm = this,\r\n format = 'yyyy-MM-dd',\r\n today = new Date(),\r\n twoWeeksAgo = new Date();\r\n twoWeeksAgo.setDate(today.getDate() - 14); \r\n vm.startDate = $filter('date')(twoWeeksAgo, format);\r\n vm.endDate = $filter('date')(today, format);\r\n vm.heading = \"Items By Week/Type\";\r\n vm.isBrandPicked = false;\r\n vm.showGrid = false;\r\n vm.showMessage = false;\r\n vm.gridOptions = {\r\n exporterMenuPdf: false,\r\n enableGridMenu: true,\r\n enableSelectAll: true,\r\n exporterCsvFilename: vm.heading + '.csv',\r\n exporterCsvLinkElement: angular.element($window.document.querySelectorAll(\".custom-csv-link-location\")),\r\n multiSelect: true,\r\n enableFullRowSelection: true,\r\n enableRowHeaderSelection: false,\r\n enablePagination: true,\r\n enablePaginationControls: true,\r\n paginationPageSizes: [10, 20, 30],\r\n paginationPageSize: 10,\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n },\r\n columnDefs: [\r\n { name: 'WeekStarting', displayName: 'Week Starting', width: 150 },\r\n { name: 'Company', displayName: 'Company', width: 170 },\r\n { name: 'City', displayName: 'City', width: 170 },\r\n { name: 'StateCode', displayName: 'State', width: 75 },\r\n { name: 'Address1', displayName: 'Address', width: 220 },\r\n { name: 'PostalCode', displayName: 'Zip', width: 80 },\r\n { name: 'Quantity', displayName: 'Quantity', width: 80 } \r\n ]\r\n };\r\n\r\n vm.getProductsByBrand = function () {\r\n getProductsByBrand(vm.selectedBrand);\r\n }\r\n vm.getProductsByProgram = function () {\r\n if (vm.selectedProgram == 'All')\r\n vm.products = vm.allProducts;\r\n else {\r\n var filteredArray = vm.allProducts.filter(function (obj) {\r\n return obj.SubType == vm.selectedProgram;\r\n });\r\n vm.products = filteredArray;\r\n }\r\n }\r\n nbPosApi.getBrands().then(function (response) {\r\n vm.brands = response.data;\r\n });\r\n var getProductsByBrand = function (brandId) {\r\n nbPosApi.getItemsByBrand(brandId).then(function (response) {\r\n vm.products = response.data.Items;\r\n vm.allProducts = response.data.Items;\r\n vm.programs = response.data.SubTypes;\r\n vm.programs.push(\"All\");\r\n vm.selectedProgram = \"All\";\r\n vm.isBrandPicked = true;\r\n });\r\n } \r\n vm.getItems = function () {\r\n var start = $filter('date')(vm.startDate, \"yyyy-MM-dd\"),\r\n end = $filter('date')(vm.endDate, \"yyyy-MM-dd\"); \r\n nbPosApi.getItemByWeekDetailReport(vm.selectedBrand, start, end, vm.selectedProgram, vm.shippedItemsOnly ? vm.shippedItemsOnly : false).then(function (response) {\r\n if (response.data.length > 0) {\r\n vm.gridOptions.data = response.data;\r\n vm.showGrid = true;\r\n vm.showMessage = false;\r\n }\r\n else {\r\n vm.showGrid = false;\r\n vm.showMessage = true;\r\n }\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n }\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('itemsByStateTypeController', itemsByStateTypeController);\r\n /** @ngInject */\r\n function itemsByStateTypeController($routeParams, $log, nbPosApi, $location, $filter,$window) {\r\n var vm = this,\r\n format = 'yyyy-MM-dd',\r\n today = new Date(),\r\n twoWeeksAgo = new Date();\r\n twoWeeksAgo.setDate(today.getDate() - 14);\r\n vm.startDate = $filter('date')(twoWeeksAgo, format);\r\n vm.endDate = $filter('date')(today, format);\r\n vm.heading = \"Items By State/Type\";\r\n vm.isBrandPicked = false;\r\n vm.showGrid = false;\r\n vm.showMessage = false;\r\n vm.gridOptions = {\r\n exporterMenuPdf: false, \r\n enableGridMenu: true,\r\n enableSelectAll: true,\r\n exporterCsvFilename: vm.heading + '.csv',\r\n exporterCsvLinkElement: angular.element($window.document.querySelectorAll(\".custom-csv-link-location\")),\r\n multiSelect: true,\r\n enableFullRowSelection: true,\r\n enableRowHeaderSelection: false,\r\n enablePagination: true,\r\n enablePaginationControls: true,\r\n paginationPageSizes: [10, 20, 30],\r\n paginationPageSize: 10,\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n },\r\n columnDefs: [\r\n { name: 'WeekStarting', displayName: 'Week Starting', width: 150 },\r\n { name: 'Company', displayName: 'Company', width: 170 },\r\n { name: 'City', displayName: 'City', width: 170 },\r\n { name: 'StateCode', displayName: 'State', width: 75 },\r\n { name: 'Address1', displayName: 'Address', width: 220 },\r\n { name: 'PostalCode', displayName: 'Zip', width: 80 },\r\n { name: 'Quantity', displayName: 'Quantity', width: 80 },\r\n { name: 'Description', displayName: 'Description', width: 80 },\r\n { name: 'Subtype', displayName: 'Subtype', width: 80 }\r\n ]\r\n };\r\n vm.getProductsByBrand = function () {\r\n getProductsByBrand(vm.selectedBrand);\r\n }\r\n vm.getProductsByProgram = function () {\r\n if (vm.selectedProgram == 'All')\r\n vm.products = vm.allProducts;\r\n else {\r\n var filteredArray = vm.allProducts.filter(function (obj) {\r\n return obj.SubType == vm.selectedProgram;\r\n });\r\n vm.products = filteredArray;\r\n }\r\n }\r\n nbPosApi.getBrands().then(function (response) {\r\n vm.brands = response.data;\r\n });\r\n var getProductsByBrand = function (brandId) {\r\n nbPosApi.getItemsByBrand(brandId).then(function (response) {\r\n vm.products = response.data.Items;\r\n vm.allProducts = response.data.Items;\r\n vm.programs = response.data.SubTypes;\r\n vm.programs.push(\"All\");\r\n vm.selectedProgram = \"All\";\r\n vm.isBrandPicked = true;\r\n });\r\n }\r\n vm.getItems = function () {\r\n var start = $filter('date')(vm.startDate, \"yyyy-MM-dd\"),\r\n end = $filter('date')(vm.endDate, \"yyyy-MM-dd\");\r\n nbPosApi.getItemByStateDetailReport(vm.selectedBrand, start, end, vm.selectedProgram, vm.shippedItemsOnly ? vm.shippedItemsOnly : false).then(function (response) { \r\n if (response.data.length > 0) {\r\n vm.gridOptions.data = response.data;\r\n vm.showGrid = true;\r\n vm.showMessage = false;\r\n }\r\n else {\r\n vm.showGrid = false;\r\n vm.showMessage = true;\r\n }\r\n $log.error(response); \r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('adminItemsController', adminItemsController);\r\n /** @ngInject */\r\n function adminItemsController($log, $location, nbPosApi, Notification) {\r\n var vm = this;\r\n vm.endpointUrl = nbPosApi.Url;\r\n vm.selectedRow = [];\r\n vm.isDataBound = false; \r\n vm.data = []; \r\n vm.selected = null;\r\n \r\n nbPosApi.getBrands().then(function (response) { \r\n vm.brands = response.data;\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n vm.saveItemOrder = function () {\r\n var indexModifier = 0;\r\n console.log(vm.data);\r\n for(var i=0; i < vm.data.length; i++) {\r\n indexModifier = indexModifier + 1;\r\n nbPosApi.SaveItemOrder(vm.data[i].Id, indexModifier).then(function (response) {\r\n console.log(response);\r\n }, function (response) {\r\n $log.error(response);\r\n return Notification.error({ message: 'Item order did not changed. Please, refresh the page!' });\r\n });\r\n if(vm.data.length === indexModifier) {\r\n Notification.success({ message: 'Item order changed successfully.' });\r\n }\r\n }\r\n } \r\n vm.goToCreateForm = function () {\r\n $location.path(\"/admin/itemsEdit\");\r\n }\r\n vm.getItems = function () {\r\n nbPosApi.getItemsByBrand(vm.selectedBrand).then(function (response) {\r\n vm.data = response.data.Items;\r\n vm.isGridDataBound = true;\r\n vm.isProgramDataBound = true;\r\n vm.allProducts = response.data.Items;\r\n vm.programs = response.data.SubTypes;\r\n vm.programs.push(\"All\");\r\n vm.selectedProgram = \"All\";\r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error({ message: response.statusText });\r\n })\r\n };\r\n vm.getItemsByProgram = function () {\r\n if (vm.selectedProgram === 'All') {\r\n vm.gridOptions.data = vm.allProducts;\r\n }\r\n else {\r\n vm.gridOptions.data = vm.allProducts.filter(function (obj) {\r\n return obj.SubType === vm.selectedProgram;\r\n });\r\n }\r\n };\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('adminItemPermissionsController', adminItemPermissionsController);\r\n\r\n /** @ngInject */\r\n\r\n function adminItemPermissionsController($log, $routeParams, nbPosApi, Notification) {\r\n var vm = this; \r\n vm.isBrandChosen = false;\r\n vm.isGroupChosen = false;\r\n vm.addedItemsForUpdate = []; \r\n\r\n vm.gridOptions = {\r\n enableRowHeaderSelection:false,\r\n enableFullRowSelection : false,\r\n enableSelectAll: false,\r\n columnDefs: [ \r\n {\r\n name: 'AllowView', displayName: 'Allow View', width: '20%', enableCellEdit: true,\r\n cellTemplate: \"\"\r\n },\r\n {\r\n name: 'AllowOrder', displayName: 'Allow Order', width: '20%', enableCellEdit: true,\r\n cellTemplate: \"\"\r\n },\r\n {\r\n name: 'ItemNumber', displayName: 'Item #', width: '20%', enableCellEdit: false\r\n },\r\n {\r\n name: 'ItemDescription', displayName: 'Item Description', width: '40%', enableCellEdit: false\r\n }\r\n ],\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi; \r\n }\r\n }\r\n\r\n vm.getBrands = function(){\r\n nbPosApi.getBrands().then(function (response) { \r\n vm.itemTypes = response.data;\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n }\r\n\r\n vm.getUserGroups = function() {\r\n nbPosApi.getUserGroups().then(function (response) { \r\n vm.groups = response.data;\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n }\r\n \r\n vm.updateItemPermissions = function () { \r\n nbPosApi.UpdateGroupItemPermissions(vm.addedItemsForUpdate).then(function () {\r\n Notification.success({ message: \"Updates Saved\" }); \r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error({ message: \"Unable to Save\" });\r\n });\r\n }; \r\n\r\n vm.clearUnsavedChanges = function () {\r\n vm.isBrandChosen = false;\r\n vm.isGroupChosen = false;\r\n vm.gridOptions.data = [];\r\n vm.addedItemsForUpdate = [];\r\n vm.itemTypes = [];\r\n vm.groups = [];\r\n vm.group = \"\";\r\n vm.itemType = \"\";\r\n vm.getUserGroups(); \r\n vm.getBrands(); \r\n };\r\n\r\n vm.addValueForRecordUpdate = function(row) { \r\n var itemIndex = vm.addedItemsForUpdate.findIndex(function(r){return r.Id === row.Id});\r\n if(itemIndex === -1){\r\n var mappedItem = vm.mapPropertiesForUpdate(row); \r\n vm.addedItemsForUpdate.push(mappedItem);\r\n }\r\n else vm.addedItemsForUpdate.splice(itemIndex,1, row); \r\n }\r\n\r\n vm.mapPropertiesForUpdate = function (items){\r\n return {\r\n ItemId: items.ItemId,\r\n GroupId: parseInt(vm.GroupId),\r\n AllowView: items.AllowView,\r\n AllowOrder: items.AllowOrder\r\n }\r\n }\r\n \r\n vm.getItemsByBrand = function(){ \r\n nbPosApi.GetItemsByGroupdAndProgram(vm.GroupId,vm.itemType).then(function (response) { \r\n vm.isBrandChosen = true; \r\n vm.gridOptions.data = response.data;\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n }\r\n\r\n vm.setGroupValue = function(){ \r\n vm.GroupId = vm.group;\r\n vm.isGroupChosen = true;\r\n }\r\n\r\n vm.getBrands();\r\n vm.getUserGroups();\r\n }\r\n})();\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('adminItemsEditController', adminItemsEditController);\r\n\r\n /** @ngInject */\r\n\r\n function adminItemsEditController($log, $location, $routeParams, nbPosApi, nbPosUtil, Notification, $filter, $window, $scope, $q) {\r\n var vm = this;\r\n vm.Groups = [];\r\n vm.isAddingGroup = false;\r\n vm.itemId = $routeParams.itemId ? $routeParams.itemId : 0;\r\n vm.inEditMode = vm.itemId != '' && vm.itemId != undefined;\r\n vm.btnAction = vm.inEditMode ? 'Save' : 'Submit';\r\n vm.heading = vm.inEditMode ? 'Edit' : 'Create New';\r\n vm.endpointUrl = nbPosApi.Url;\r\n vm.NewImage = '';\r\n vm.tabToggle = true;\r\n vm.gridEdited = false;\r\n vm.uploadImageChanged = false; \r\n vm.OverridePerm = true;//to be populated by data\r\n\r\n vm.gridOptions = {\r\n enableRowHashing:false,\r\n columnDefs: [\r\n {\r\n name: 'GroupName', displayName: 'Group', width: '60%', enableCellEdit: false\r\n },\r\n {\r\n name: 'AllowView', displayName: 'Allow View', width: '20%', enableCellEdit: true,\r\n cellTemplate: \"\"\r\n },\r\n {\r\n name: 'AllowOrder', displayName: 'Allow Order', width: '20%', enableCellEdit: true,\r\n cellTemplate: \"\"\r\n }\r\n ],\r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi;\r\n }\r\n }\r\n\r\n vm.removeGroup = function (i) {\r\n $log.log(i);\r\n vm.gridOptions.data.splice(i, 1);\r\n }\r\n\r\n if (vm.inEditMode) {\r\n nbPosApi.getItem(vm.itemId).then(function (response) {\r\n vm.ItemTypeId = response.data.ItemTypeId;\r\n vm.ItemNumber = response.data.ItemNumber;\r\n vm.SubType = response.data.SubType;\r\n vm.Description = response.data.Description;\r\n vm.PackageCount = response.data.PackageCount;\r\n vm.SortOrder = response.data.SortOrder;\r\n vm.Level = response.data.Level;\r\n vm.IsLabel = response.data.IsLabel;\r\n vm.Language = response.data.Language;\r\n vm.LabelType = response.data.LabelType;\r\n vm.Status = response.data.Status;\r\n vm.ImageId = response.data.ImageId;\r\n vm.Suppliers = response.data.SupplierId === 0 ? null : response.data.SupplierId,\r\n vm.NewAsOf = $filter('date')(new Date(response.data.CreatedOn), \"MM-dd-yyyy\")\r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error({ message: response.statusText });\r\n });\r\n }\r\n\r\n nbPosApi.GetItemPermissions(vm.itemId).then(function (response) {\r\n if (response.data.length < 1) {\r\n vm.OverridePerm = false;\r\n }\r\n else {\r\n vm.gridOptions.data = [];\r\n angular.forEach(response.data, function (item) {\r\n vm.gridOptions.data[item.GroupId] = item;\r\n })\r\n }\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n\r\n nbPosApi.getBrands().then(function (response) {\r\n vm.itemTypes = response.data;\r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error({ message: response.statusText });\r\n });\r\n\r\n nbPosApi.getSuppliers().then(function (response) {\r\n vm.suppliers = response.data;\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n\r\n nbPosApi.getUserGroups().then(function (response) {\r\n vm.Groups = response.data;\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n\r\n vm.submit = function () {\r\n var data = {\r\n ItemTypeId: parseInt(vm.ItemTypeId) ? parseInt(vm.ItemTypeId) : 0,\r\n ItemNumber: vm.ItemNumber,\r\n SubType: vm.SubType,\r\n Description: vm.Description,\r\n PackageCount: vm.PackageCount,\r\n SortOrder: 1,//parseInt(vm.SortOrder),\r\n Level: 0,//parseInt(vm.Level),\r\n IsLabel: vm.IsLabel ? true : false,\r\n Language: \"eng\",//vm.Language,\r\n LabelType: \"l\",//vm.LabelType,\r\n Status: vm.Status,\r\n SupplierId: vm.Suppliers,\r\n Notes: vm.Notes,\r\n Binary: vm.NewImage\r\n },\r\n promise = vm.inEditMode ? nbPosApi.updateItem(vm.itemId, data) : nbPosApi.createItem(data);\r\n promise.then(function () {\r\n Notification.success({ message: \"Item List Updated\" });\r\n vm.cancel();\r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error({ message: \"Item not Updated\" });\r\n });\r\n };\r\n\r\n var isExistingPermission = function (existingPerms, newPerm) {\r\n var exists = false;\r\n angular.forEach(existingPerms, function (perm) {\r\n if(perm.GroupId === newPerm.GroupId)\r\n {\r\n exists = true;\r\n }\r\n });\r\n return exists;\r\n };\r\n // TODO: Definitely need to refactor this puppy.\r\n vm.UpdateItemPermissions = function () {\r\n var promises = [];\r\n nbPosApi.GetItemPermissions(vm.itemId).then(function (response) {\r\n var existingPerms = response.data,\r\n deletePerms = [],\r\n updatePerms = [],\r\n addPerms = [];\r\n $log.log(existingPerms);\r\n if (vm.OverridePerm) {\r\n angular.forEach(vm.gridOptions.data, function (perm) {\r\n if (perm.AllowOrder === false && perm.AllowView === false) {\r\n deletePerms.push(perm);\r\n }\r\n else if (isExistingPermission(existingPerms, perm)) {\r\n updatePerms.push(perm);\r\n }\r\n else {\r\n addPerms.push(perm);\r\n }\r\n });\r\n }\r\n else {\r\n deletePerms = existingPerms;\r\n }\r\n $log.log(deletePerms);\r\n $log.log(updatePerms);\r\n $log.log(addPerms);\r\n angular.forEach(deletePerms, function (perm) {\r\n promises.push(nbPosApi.DeleteItemPermission(perm.GroupId, perm.ItemId));\r\n });\r\n angular.forEach(updatePerms, function (perm) {\r\n promises.push(nbPosApi.UpdateItemPermission(perm));\r\n });\r\n angular.forEach(addPerms, function (perm) {\r\n delete perm.Id;\r\n promises.push(nbPosApi.AddItemPermission(perm));\r\n });\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n return $q.all(promises);\r\n };\r\n vm.AddGroup = function () { \r\n var data = {\r\n ItemId: vm.itemId,\r\n ItemDescription: vm.Description,\r\n GroupId: vm.selectedGroup.Id,\r\n GroupName: vm.selectedGroup.Name,\r\n AllowView: vm.AllowView ? true : false,\r\n AllowOrder: vm.AllowOrder ? true : false\r\n }; \r\n vm.gridOptions.data[vm.selectedGroup.Id] = data; \r\n };\r\n vm.getImageBinary = function () {\r\n vm.fileInputElement = $window.document.getElementById(\"newImage\");\r\n var fileInput = vm.fileInputElement.files[0], bytes,\r\n reader = new FileReader();\r\n\r\n if (fileInput != undefined) {\r\n reader.onloadend = function (e) {\r\n bytes = new Uint8Array(e.target.result);\r\n vm.NewImage = nbPosUtil.JSONtoBase64(bytes);\r\n vm.addImageSrc(fileInput);\r\n }\r\n reader.readAsArrayBuffer(fileInput);\r\n vm.uploadImageChanged = true;\r\n Notification.success({ message: \"Image added to Item\" });\r\n return;\r\n }\r\n Notification.error({ message: \"Choose an Image to Add\" });\r\n };\r\n vm.addImageSrc = function (file) {\r\n vm.itemImage = $window.document.getElementById(\"itemImage\");\r\n var reader = new FileReader();\r\n reader.onloadend = function (e) {\r\n vm.itemImage.src = e.target.result;\r\n }\r\n reader.readAsDataURL(file);\r\n };\r\n vm.SavePerms = function (close) {\r\n vm.UpdateItemPermissions().then(function (responses) {\r\n $log.log(responses);\r\n Notification.success({ message: \"Permissions Updated\" });\r\n if (close) {\r\n vm.cancel();\r\n }\r\n }, function (responses) {\r\n $log.error(responses);\r\n Notification.error({ message: \"Permissions Not Updated\" });\r\n });\r\n }\r\n vm.setActive = function () {\r\n vm.tabToggle = !vm.tabToggle;\r\n };\r\n vm.toggleGroupAdd= function () {\r\n vm.isAddingGroup = !vm.isAddingGroup;\r\n };\r\n vm.cancel = function () {\r\n $location.path(\"/admin/items\");\r\n };\r\n }\r\n})();\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('adminGroupsEditController', adminGroupsEditController);\r\n /** @ngInject */\r\n function adminGroupsEditController($log, nbPosApi, $routeParams, $location, Notification) {\r\n var vm = this;\r\n vm.groupId = $routeParams.id; \r\n vm.inEditMode = vm.groupId != '' && vm.groupId != undefined;\r\n vm.btnAction = vm.inEditMode ? 'Save' : 'Submit';\r\n vm.heading = vm.inEditMode ? 'Edit' : 'Create New';\r\n\r\n if (vm.inEditMode) {\r\n var res = nbPosApi.getGroupById(vm.groupId);\r\n res.then(function (group) {\r\n vm.Name = group.Name;\r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error({ message: response.statusText });\r\n })\r\n }\r\n vm.processUserData = function () {\r\n var data = {\r\n Name: vm.Name\r\n },\r\n promise = vm.inEditMode ? nbPosApi.updateGroup(vm.groupId,data) : nbPosApi.createGroup(data);\r\n promise.then(function () {\r\n Notification.success({ message: \"Group list updated\" });\r\n vm.cancel();\r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error({ message: \"Failed to update Users\" });\r\n });\r\n };\r\n vm.cancel = function () {\r\n $location.path(\"/admin/groups\");\r\n }; \r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('adminGroupsController', adminGroupsController)\r\n .filter('trusted', function ($sce) {\r\n return function (value) {\r\n return $sce.trustAsHtml(value);\r\n }\r\n });\r\n /** @ngInject */\r\n function adminGroupsController($log, nbPosApi, $location) {\r\n var vm = this;\r\n vm.heading = \"Manage Groups\";\r\n vm.gridOptions = {};\r\n vm.showResults = false;\r\n vm.selectedRow = [];\r\n\r\n vm.gridOptions.multiSelect = false;\r\n vm.gridOptions.enableFullRowSelection = true;\r\n vm.gridOptions.selectedItems = vm.selectedRow;\r\n vm.gridOptions.enableRowHeaderSelection = false;\r\n\r\n vm.gridOptions.onRegisterApi = function (gridApi) {\r\n vm.gridApi = gridApi;\r\n vm.gridApi.selection.on.rowSelectionChanged(null, function (row) {\r\n var id = row.entity.Id;\r\n $location.path(\"admin/groupsEdit/\" + id);\r\n });\r\n };\r\n\r\n vm.gridOptions.columnDefs = [\r\n {\r\n name: 'Name',\r\n displayName: 'Name',\r\n cellTemplate: '
'\r\n }\r\n ];\r\n vm.goToCreateForm = function () {\r\n $location.path(\"admin/groupsEdit\");\r\n };\r\n nbPosApi.getGroups().then(function (response) {\r\n vm.gridOptions.data = response.data;\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('nbPos')\r\n .directive('reportExport', reportExport);\r\n\r\n /** @ngInject */\r\n function reportExport() {\r\n var directive = {\r\n restrict: 'E',\r\n templateUrl: 'app/directives/report-export/reportExport.html',\r\n controller: ReportExportController,\r\n controllerAs: 'er',\r\n bindToController: true\r\n };\r\n\r\n return directive;\r\n\r\n /** @ngInject */\r\n function ReportExportController() {\r\n var vm = this;\r\n vm.formats = [{ value: 'xslx', label: 'XSLX' },\r\n { value: 'xsl', label: 'XSL' },\r\n { value: 'csv', label: 'CSV' },\r\n { value: 'pdf', label: 'PDF' },\r\n { value: 'rtf', label: 'RTF' }];\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('nbPos')\r\n .directive('acmeNavbar', acmeNavbar);\r\n\r\n /** @ngInject */\r\n function acmeNavbar() {\r\n var directive = {\r\n restrict: 'E',\r\n templateUrl: 'app/directives/navbar/navbar.html',\r\n controller: NavbarController,\r\n controllerAs: 'nav',\r\n bindToController: true\r\n };\r\n\r\n return directive;\r\n\r\n /** @ngInject */\r\n function NavbarController($scope, $window, nbPosApi, $rootScope, $location,$log) {\r\n var vm = this; \r\n vm.cartCount = 0; \r\n vm.currentUser = $rootScope.appConfig.Auth;\r\n vm.targetUser = \"\";\r\n vm.showBreadcrumb = true;\r\n $scope.$on('cart-updated', function (event, args) {\r\n $log.log(args)\r\n $log.log(event)\r\n if (args.counter === 0)\r\n vm.cartCount = 0;\r\n else\r\n vm.cartCount = vm.cartCount + args.counter;\r\n vm.currentUser = $rootScope.appConfig.Auth;\r\n event;\r\n });\r\n $scope.$on('order-for', function (event, args) {\r\n if (args.email === '') {\r\n vm.cancelImpersonation();\r\n }\r\n else {\r\n vm.targetUser = args.email; \r\n $rootScope.appConfig.Auth.ImpersonatedId = args.userid;\r\n $rootScope.appConfig.Auth.ImpersonatedEmail = args.email;\r\n $rootScope.appConfig.Auth.IsImpersonated = true;\r\n }\r\n event;\r\n });\r\n vm.cancelImpersonation = function () {\r\n vm.targetUser = \"\";\r\n $rootScope.appConfig.Auth.ImpersonatedId = 0;\r\n $rootScope.appConfig.Auth.ImpersonatedEmail = 0;\r\n $rootScope.appConfig.Auth.IsImpersonated = false;\r\n $location.path(\"/#/\");\r\n }\r\n vm.goBack = function () {\r\n $window.history.back();\r\n }\r\n vm.logout = function () {\r\n nbPosApi.logOut();\r\n }\r\n if ($rootScope.appConfig.isAuthenticated) { \r\n nbPosApi.getCart().then(function (response) {\r\n vm.cartCount = response.data.Items.length; \r\n $rootScope.appConfig.Cart = response.data;\r\n });\r\n }\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('ProductsController', productsController);\r\n /** @ngInject */\r\n function productsController($routeParams, $log, nbPosApi, $rootScope, $location, Notification) {\r\n var vm = this,\r\n currentItem,\r\n isAdmin = $rootScope.appConfig.Auth.IsAdministrator, \r\n getItemByBrands = function (response) {\r\n vm.brands = response.data;\r\n var filteredArray = vm.brands.filter(function (obj) {\r\n return obj.Id.toString() == $routeParams.brandId;\r\n });\r\n if (filteredArray.length < 1) {\r\n vm.isLoading = false;\r\n vm.showNotAuthorizedMessage = true;\r\n return;\r\n }\r\n vm.selectedBrand = filteredArray[0] ? filteredArray[0].Id.toString() : vm.brands[0].Id.toString();\r\n vm.ButtonText = 'Add to Cart';\r\n $log.debug('productsController', $rootScope.appConfig.Auth);\r\n if (isAdmin) {\r\n $log.debug('productsController IsAdministrator', isAdmin);\r\n return nbPosApi.getItemsByBrand($routeParams.brandId);\r\n }\r\n else {\r\n $log.debug('productsController IS NOT Administrator', isAdmin);\r\n return nbPosApi.getItemsByBrandAndUser($routeParams.brandId);\r\n }\r\n },\r\n loadProgramsAndProducts = function (response) {\r\n if (vm.showNotAuthorizedMessage) {\r\n return;\r\n }\r\n vm.products = response.data.Items;\r\n vm.allProducts = response.data.Items;\r\n vm.programs = response.data.SubTypes;\r\n vm.programs.push(\"All\");\r\n vm.selectedProgram = \"All\";\r\n vm.isLoading = false;\r\n },\r\n cartUpdate = function (response) {\r\n if (response.data && !currentItem.isInCart) {\r\n $rootScope.$broadcast('cart-updated', { counter: 1 });\r\n Notification.success({ message: \"Cart Updated\" });\r\n currentItem.isInCart = true;\r\n }\r\n },\r\n notifyError = function () {\r\n Notification.error({ message: \"Failed to Add to Cart\" });\r\n };\r\n vm.showNotAuthorizedMessage = false;\r\n vm.isLoading = true;\r\n vm.reversed = false;\r\n vm.endpointUrl = nbPosApi.Url;\r\n vm.addProductToCart = function (item) {\r\n currentItem = item;\r\n nbPosApi.addItemToCart(item.Id,item.quantity)\r\n .then(cartUpdate, notifyError);\r\n }; \r\n vm.getProductsByBrand = function () {\r\n $location.path(\"/products/\" + vm.selectedBrand);\r\n }\r\n vm.getProductsByProgram = function () {\r\n if (vm.selectedProgram == 'All')\r\n vm.products = vm.allProducts;\r\n else {\r\n var filteredArray = vm.allProducts.filter(function (obj) {\r\n return obj.SubType == vm.selectedProgram;\r\n });\r\n vm.products = filteredArray;\r\n }\r\n } \r\n vm.compareParameter = function (type, a, b) { \r\n return (a < b) ? -1 : (a > b) ? 1 : 0; \r\n }\r\n vm.sortBrandsBy = function (choice) {\r\n vm.products = vm.products.sort(function (a, b) {\r\n return vm.compareParameter(choice, a[choice], b[choice]);\r\n })\r\n }\r\n vm.ReverseOrder = function () {\r\n vm.reversed = !vm.reversed;\r\n vm.products = vm.products.reverse();\r\n }\r\n vm.isIteminCart = function (prodId) {\r\n if ($rootScope.appConfig.Cart) {\r\n var itemsInCart = $rootScope.appConfig.Cart.Items;\r\n for (var x = 0; x < itemsInCart.length; x++) {\r\n var cartItem = itemsInCart[x].Item;\r\n if (cartItem.Id === prodId)\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n //nbPosApi.getBrands()\r\n nbPosApi.getBrandsByUserId()\r\n .then(getItemByBrands)\r\n .then(loadProgramsAndProducts);\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('CartController', cartController);\r\n /** @ngInject */\r\n function cartController($log, nbPosApi, $rootScope, Notification) {\r\n var vm = this;\r\n vm.endpointUrl = nbPosApi.Url;\r\n vm.isError = false;\r\n nbPosApi.getCart().then(function (response) { \r\n vm.Items = response.data.Items;\r\n $rootScope.appConfig.Cart = response.data;\r\n }, function (response) {\r\n $log.error(response.statusText);\r\n vm.isError = true; \r\n });\r\n vm.deleteItem = function (itemIndex) {\r\n var item = vm.Items[itemIndex].Item;\r\n nbPosApi.deleteCartItem(item.Id).then(function (response) {\r\n $log.log(response);\r\n if (response.data === true) {\r\n vm.Items.splice(itemIndex, 1);\r\n $rootScope.$broadcast('cart-updated', { counter: -1 });\r\n Notification.success({ message: \"Item Deleted!\" });\r\n }\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n }\r\n vm.updateQuantities = function () {\r\n nbPosApi.clearCart().then(function () {\r\n for (var c = 0; c < vm.Items.length; c++) {\r\n var prod = vm.Items[c];\r\n nbPosApi.addItemToCart(prod.Item.Id, prod.Quantity).then(function () {\r\n }, function () {\r\n Notification.error({ message: \"Failed to save item: \" + prod.Item.ItemNumber });\r\n });\r\n }\r\n }, function () {\r\n Notification.error({ message: \"Failed to Save Cart Updates\" });\r\n });\r\n }\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('BrandController', brandController);\r\n /** @ngInject */\r\n function brandController($rootScope, $log, nbPosApi, Notification) {\r\n var vm = this;\r\n var loadBrands = function (response) {\r\n vm.brands = response.data.sort(function (a, b) {\r\n return vm.compareStrings(a.Description, b.Description);\r\n })\r\n vm.isLoading = false;\r\n }\r\n var showError = function (response) {\r\n $log.error(response);\r\n Notification.error({ message: response.statusText });\r\n }\r\n $rootScope.showBreadcrumb = false;\r\n vm.brands = [];\r\n vm.endpointUrl = nbPosApi.Url;\r\n vm.isLoading = true;\r\n $log.debug('brandController Auth', $rootScope.appConfig.Auth);\r\n $log.debug('IsAdministrator', $rootScope.appConfig.Auth.IsAdministrator);\r\n if ($rootScope.appConfig.Auth.IsAdministrator) { \r\n nbPosApi.getBrands().then(loadBrands, showError);\r\n }\r\n else { \r\n nbPosApi.getBrandsByUserId().then(loadBrands, showError);\r\n }\r\n vm.compareStrings = function (a, b) {\r\n return (a < b) ? -1 : (a > b) ? 1 : 0;\r\n } \r\n }\r\n})();\r\n\r\n\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('SearchuserresultsController', searchuserresultsController);\r\n /** @ngInject */\r\n function searchuserresultsController($location, $log, nbPosApi, $rootScope) {\r\n var vm = this;\r\n vm.isLoading = true;\r\n var query = $location.search();\r\n vm.selectUser = function (user) {\r\n $log.log(user); \r\n $rootScope.$broadcast('order-for', { email: user.Email, userid: user.Id });\r\n $location.path(\"shipping\");\r\n };\r\n nbPosApi.findUsers(query.e ? query.e : \"\", query.p ? query.p : \"\", query.f ? query.f : \"\", query.l ? query.l : \"\", query.c ? query.c : \"\", query.o ? true : false)\r\n .then(function (response) {\r\n vm.searchResults = response.data;\r\n vm.isLoading = false;\r\n }, function (response) {\r\n $log.error(response);\r\n });\r\n }\r\n})();\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('SearchuserController', searchuserController);\r\n /** @ngInject */\r\n function searchuserController($log, $location) {\r\n var vm = this\r\n vm.searchUser = function () {\r\n $log.log(vm);\r\n if (vm.email) {\r\n $location.search(\"e\", vm.email);\r\n }\r\n if (vm.phone) {\r\n $location.search(\"p\", vm.phone);\r\n }\r\n if (vm.firstName) {\r\n $location.search(\"f\", vm.firstName);\r\n }\r\n if (vm.lastName) {\r\n $location.search(\"l\", vm.lastName);\r\n }\r\n if (vm.company) {\r\n $location.search(\"c\", vm.company);\r\n }\r\n if (vm.noLoginOnly) {\r\n $location.search(\"o\", true);\r\n }\r\n $location.path(\"searchuserresults\");\r\n }\r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('ShippingController', shippingController);\r\n /** @ngInject */\r\n function shippingController($log, nbPosApi, $rootScope, Notification) {\r\n var vm = this, \r\n isImpersonated = $rootScope.appConfig.Auth.IsImpersonated;\r\n vm.userId = isImpersonated ? $rootScope.appConfig.Auth.ImpersonatedId : $rootScope.appConfig.Auth.UserId;\r\n vm.targetEmail = isImpersonated ? $rootScope.appConfig.Auth.ImpersonatedEmail : $rootScope.appConfig.Auth.Email;\r\n vm.dist = [{ value: 'National Beef', label: 'National Beef' }, { value: 'Other', label: 'Other' }]; \r\n vm.addressType = [{ value: 1, label: 'Residential' }, { value: 2, label: 'Business' }];\r\n vm.Countries = [];\r\n vm.FieldReps = [];\r\n vm.States = [];\r\n vm.submitOrder = function () {\r\n vm.selectedAddress.StateCode = vm.selectedAddress.Country === 238 ? vm.selectedAddress.StateCode : \"\";\r\n vm.selectedAddress.PostalCode = vm.selectedAddress.Country === 238 ? vm.selectedAddress.PostalCode : \"\";\r\n var promise = vm.selectedAddress.Id === 0 ? nbPosApi.createAddress(vm.selectedAddress, vm.userId) : nbPosApi.updateAddress(vm.selectedAddress, vm.selectedAddress.Id);\r\n promise.then(function (response) { \r\n var addressId = vm.selectedAddress.Id === 0 ? response.data : vm.selectedAddress.Id;\r\n sendOrder(addressId);\r\n }) \r\n }\r\n var sendOrder = function (addressId) {\r\n $log.log($rootScope.appConfig.Auth);\r\n var orderHeader = {\r\n FieldRepId: vm.selectedAddress.FieldRep,\r\n Supplier: vm.Distributor === \"Other\" ? vm.OtherDistributor : vm.Distributor,\r\n CustomerComment: vm.CustomerComment,\r\n InternalComment: vm.InternalComment,\r\n Status: \"N\"\r\n }\r\n var promise = isImpersonated ? nbPosApi.SubmitCartFor(addressId, orderHeader, vm.userId) : nbPosApi.submitCart(addressId, orderHeader);\r\n promise.then(function (response) {\r\n if (response && response.data != false) {\r\n $rootScope.$broadcast('cart-updated', { counter: 0 });\r\n $rootScope.$broadcast('order-for', { email: '' });\r\n Notification.success({ message: \"Order Submitted\" });\r\n }\r\n else {\r\n Notification.error({ message: \"Failed to Submit Order\" });\r\n }\r\n }, function (response) {\r\n $log.error(response);\r\n Notification.error({ message: \"Failed to Submit Order\" });\r\n });\r\n }\r\n var preloadAddress = function () {\r\n var promise = vm.userId !== 0 ? nbPosApi.getAddressesByUser(vm.userId) : nbPosApi.getAddresses();\r\n promise.then(function (response) { \r\n vm.addresses = response.data; \r\n vm.addresses.push({ Id: 0, Label: \"Add New Ship To Address\", UserId: vm.userid, Email: vm.targetEmail });\r\n vm.addresses = vm.addresses.sort(function (a, b) {\r\n return vm.compareIds(a.Id, b.Id);\r\n });\r\n vm.selectedAddress = vm.addresses[0]; \r\n vm.selectedAddress.Country =\r\n (vm.selectedAddress.Country === '' || vm.selectedAddress.Country === angular.undefined)\r\n ? 238 : vm.selectedAddress.Country;\r\n vm.selectedAddress.Email = vm.targetEmail;\r\n vm.Distributor = vm.dist[0].value;\r\n });\r\n }\r\n vm.compareIds = function (a, b) {\r\n return (a < b) ? -1 : (a > b) ? 1 : 0;\r\n }\r\n nbPosApi.loadCountries().then(function (response) { \r\n vm.Countries = response.data;\r\n });\r\n nbPosApi.loadFieldReps().then(function (response) { \r\n vm.FieldReps = response.data;\r\n });\r\n nbPosApi.loadUSAState().then(function (response) { \r\n vm.States = response.data;\r\n preloadAddress();\r\n }); \r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('ShipOrderController', ShipOrderController);\r\n /** @ngInject */\r\n function ShipOrderController($log, nbPosApi, $routeParams, Notification, $route, $location, $scope) {\r\n var vm = this;\r\n vm.orderId = null;\r\n vm.endpointUrl = nbPosApi.Url;\r\n vm.hasPendingItems = false;\r\n vm.isTrackingEdit = false;\r\n vm.doSentItemsExist = false;\r\n vm.gridOptionsShipped = {\r\n rowHeight: 100,\r\n multiSelect: false, \r\n columnDefs: [\r\n { name: 'OrderItemId', displayName: 'ID', width: 75 },\r\n { name: 'Item', displayName: 'Item #', width: 75 },\r\n { name: 'Qty', displayName: 'Qty', width: 100 },\r\n { name: 'Description', displayName: 'Description' },\r\n { name: 'Thumbnail', displayName: 'Thumbnail', cellTemplate: '
\"{{row.entity.Description}}\"
' },\r\n { name: 'Shipper', displayName: 'Shipper' },\r\n {\r\n name: 'Tracking',\r\n displayName: 'Tracking',\r\n cellTemplate: '' }\r\n ],\r\n onRegisterApi: function (gridApi) {\r\n vm.$gridship = gridApi;\r\n gridApi.selection.on.rowSelectionChanged($scope, vm.showEditForm);\r\n }\r\n };\r\n vm.gridOptions = {\r\n multiSelect: true,\r\n enableRowSelection: true,\r\n rowHeight: 100,\r\n columnDefs: [\r\n { name: 'Id', displayName: 'ID', width: 75 },\r\n { name: 'ItemNumber', displayName: 'Item #', width: 75 },\r\n { name: 'Quantity', displayName: 'Qty', width: 100 },\r\n { name: 'Description', displayName: 'Description' },\r\n {\r\n name: 'ImageId',\r\n displayName: 'Image',\r\n cellTemplate: '
'\r\n }\r\n ],\r\n onRegisterApi: function (gridApi) {\r\n vm.$grid = gridApi;\r\n }\r\n };\r\n vm.submitShipment = function () {\r\n var selectedItems = vm.$grid.selection.getSelectedRows();\r\n if (selectedItems.length === 0)\r\n alert(\"Please select items to ship\");\r\n else {\r\n processOrderItems(selectedItems);\r\n updateOrderStatus(selectedItems);\r\n }\r\n }\r\n vm.updateTrackingInfo = function () {\r\n var selectedItems = vm.$gridship.selection.getSelectedRows();\r\n if (selectedItems.length === 0)\r\n alert(\"Please select items to edit\");\r\n else {\r\n editTrackingInfo(selectedItems);\r\n }\r\n }\r\n vm.backToOrderDatails = function () {\r\n $location.url(\"/order/\" + vm.orderId);\r\n }\r\n vm.showEditForm = function (grid) {\r\n if (grid.isSelected) {\r\n vm.isTrackingEdit = true;\r\n vm.doSentItemsExist = true;\r\n }\r\n else {\r\n vm.doSentItemsExist = false;\r\n vm.isTrackingEdit = false;\r\n } \r\n }\r\n var processOrderItems = function (selectedItems) {\r\n for (var c = 0; c < selectedItems.length; c++) {\r\n var item = selectedItems[c];\r\n nbPosApi.ShipOrderItem(item.Id, vm.selectedShipper, vm.TrackingNumber)\r\n .then(notifyOrderShipped, errorOrder);\r\n }\r\n }\r\n var updateOrderStatus = function (selectedItems) {\r\n var pendingItems = vm.gridOptions.data,\r\n statusIndex = pendingItems.length === selectedItems.length ? 1 : 2; //1 Completed; 2 Partial\r\n nbPosApi.UpdateOrderStatus($routeParams.id, statusIndex)\r\n .then(reload, errorOrder);\r\n }\r\n var editTrackingInfo = function (selectedItems) {\r\n for (var c = 0; c < selectedItems.length; c++) {\r\n var item = selectedItems[c]; \r\n nbPosApi.UpdateOrderItemShipment(item.Id, vm.selectedShipperShipped, vm.TrackingNumberShipped)\r\n .then(notifyTrackingInfoUpdated, errorOrder);\r\n }\r\n }\r\n var notifyOrderShipped = function () { \r\n Notification.success({ message: \"Order item shipment submitted\" }); \r\n }\r\n var notifyTrackingInfoUpdated = function (response) { \r\n Notification.success({ message: \"Order item tracking updated\" });\r\n reload(response);\r\n }\r\n var errorOrder = function (response) {\r\n Notification.error({ message: \"Error on order processing\" });\r\n $log.error(response);\r\n } \r\n var reload = function () { \r\n $route.reload();\r\n }\r\n\r\n var loadShippers = function () {\r\n nbPosApi.getShippers().then(function (response) {\r\n vm.Shippers = response.data;\r\n vm.selectedShipper = vm.Shippers[0].Id.toString();\r\n }, function (response) {\r\n Notification.error({ message: \"Failed to retrieve shippers list\" });\r\n $log.error(response);\r\n });\r\n }\r\n var loadOrderDetails = function () {\r\n nbPosApi.getOrderDetails($routeParams.id).then(function (response) { \r\n vm.order = response.data;\r\n vm.orderId = vm.order.Addresses[0].Id;\r\n setGridData();\r\n });\r\n } \r\n var setGridData = function () { \r\n \r\n var pendingItems = [],\r\n sentItems = [],\r\n trackingLinkTmpt = 'Track';\r\n for (var i = 0; i < vm.order.Items.length; i++) {\r\n var orderItem = vm.order.Items[i];\r\n var orderSent = isSentItem(orderItem.Id);\r\n if (orderSent) {\r\n sentItems.push({\r\n Id: orderSent.Id,\r\n OrderItemId: orderSent.OrderItemId,\r\n Item: orderItem.ItemNumber,\r\n Qty: orderItem.Quantity,\r\n Description: orderItem.Description,\r\n Thumbnail: vm.endpointUrl + '/image/' + orderItem.ImageId + '/thumbnail/125',\r\n Shipper: orderSent.ShipperName,\r\n Tracking: orderSent.TrackingNumer != '' ? trackingLinkTmpt.replace(\"{0}\", orderSent.TrackingLink + orderSent.TrackingNumber) : \" - \"\r\n });\r\n } \r\n else {\r\n pendingItems.push(orderItem);\r\n } \r\n }\r\n vm.gridOptions.data = pendingItems;\r\n vm.gridOptionsShipped.data = sentItems;\r\n if (pendingItems.length === 0) {\r\n vm.hasPendingItems = true; \r\n }\r\n }\r\n var isSentItem = function (itemId) {\r\n var found = false;\r\n for (var i = 0; i < vm.order.OrderShipments.length; i++) {\r\n if (vm.order.OrderShipments[i].OrderItemId === itemId) {\r\n found = vm.order.OrderShipments[i];\r\n break;\r\n }\r\n }\r\n return found;\r\n }\r\n loadOrderDetails();\r\n loadShippers();\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('SearchOrderController', searchOrderController)\r\n .directive('enterKey', function() {\r\n return function(scope, element, attrs) {\r\n \r\n element.bind(\"keydown keypress\", function(event) {\r\n var keyCode = event.which || event.keyCode;\r\n \r\n // If enter key is pressed\r\n if (keyCode === 13) {\r\n scope.$apply(function() {\r\n // Evaluate the expression\r\n scope.$eval(attrs.dlEnterKey);\r\n });\r\n \r\n event.preventDefault();\r\n }\r\n });\r\n };\r\n }); \r\n /** @ngInject */\r\n function searchOrderController($log, nbPosApi, $filter, $location ) {//, Notification) {\r\n var vm = this,\r\n format = 'yyyy-MM-dd',\r\n tomorrow = new Date(+new Date() + 86400000),\r\n twoWeeksAgo = new Date(),\r\n storedSearchParams = localStorage.getItem('searchParams'); \r\n twoWeeksAgo.setDate(tomorrow.getDate() - 14);\r\n vm.showResults = false;\r\n \r\n if(storedSearchParams){ \r\n var params = angular.fromJson(storedSearchParams); \r\n vm.Query = {\r\n city: params['city'],\r\n company: params['company'],\r\n email: params['email'],\r\n endDate: $filter('date')(params['endDate'], format), \r\n name: params['name'],\r\n orderId: params['orderId'],\r\n phone: params['phone'],\r\n startDate: $filter('date')(params['startDate'], format),\r\n state: params['state'],\r\n status: params['status'], \r\n tag: params['tag']\r\n } \r\n var start = $filter('date')(vm.Query.startDate, format);\r\n var end = $filter('date')(vm.Query.endDate, format); \r\n nbPosApi.searchOrders(start, end).then(function (response) { \r\n vm.orders = filterOrders(response.data);\r\n vm.gridOptions.data = filterOrders(response.data);\r\n vm.showResults = true; \r\n });\r\n }\r\n else { \r\n vm.Query = {\r\n city:\"\",\r\n company: \"\",\r\n email: \"\",\r\n endDate: $filter('date')(tomorrow, format), \r\n name: \"\",\r\n orderId: \"\",\r\n phone: \"\",\r\n startDate: $filter('date')(twoWeeksAgo, format),\r\n state: \"\",\r\n status: \"N\", \r\n tag:'' \r\n }\r\n }\r\n var removeTemplate = '
X';\r\n var idLinkTemplate = '
{{row.entity.Id}}
';\r\n var emailLnkTemplate = '
{{row.entity.Email}}
';\r\n var shipLinkTemplate = '
{{row.entity.Shp}}
'; \r\n \r\n vm.gridOptions = {\r\n multiSelect: false,\r\n enableFullRowSelection: false, \r\n enableRowHeaderSelection: false,\r\n selectedItems: vm.selectedRow, \r\n onRegisterApi: function (gridApi) {\r\n vm.gridApi = gridApi; \r\n },\r\n columnDefs: [\r\n { name: 'remove', displayName: 'Delete', width: 75, cellTemplate: removeTemplate },\r\n { name: 'Id', displayName: 'Id', width: 75, cellTemplate: idLinkTemplate },\r\n { name: 'CustomerName', displayName: 'Customer Name', width: 150 }, \r\n { name: 'Company', displayName: 'Company', width: 185 },\r\n { name: 'City', displayName: 'City', width: 150 },\r\n { name: 'State', displayName: 'State', width: 75 },\r\n { name: 'Email', displayName: 'Email', width: 275, cellTemplate: emailLnkTemplate },\r\n { name: 'Submitted', displayName: 'Submitted', width: 100, type:'date', cellFilter: 'date:\\\"MM/dd/yyyy\"' }, \r\n { name: 'Items', displayName: 'Ordered', width: 100 },\r\n { name: 'Shp', displayName: 'Shipped', width: 100, cellTemplate: shipLinkTemplate },\r\n { name: 'Tag', displayName: 'Tag', width: 100 }\r\n ]\r\n };\r\n vm.search = function () { \r\n localStorage.setItem(\"searchParams\", angular.toJson(vm.Query));\r\n var start = $filter('date')(vm.Query.startDate, format);\r\n var end = $filter('date')(vm.Query.endDate, format); \r\n vm.showResults = false;\r\n nbPosApi.searchOrders(start, end).then(function (response) { \r\n vm.orders = filterOrders(response.data);\r\n vm.gridOptions.data = filterOrders(response.data);\r\n vm.showResults = true; \r\n });\r\n } \r\n\r\n var isOrderValid = function (ord) { \r\n if ((vm.Query.orderId == ord.Addresses[0].OrderId || (vm.Query.orderId == \"\" || vm.Query.orderId == null)) &&\r\n (vm.Query.email.toUpperCase() === ord.Addresses[0].Email.toUpperCase() || (vm.Query.email === \"\" || vm.Query.email === null)) &&\r\n (vm.Query.name.toUpperCase().split(' ')[0] === ord.Addresses[0].FirstName.toUpperCase() || \r\n vm.Query.name.toUpperCase().split(' ')[0] === ord.Addresses[0].LastName.toUpperCase() || \r\n vm.Query.name.toUpperCase().split(' ')[1] === ord.Addresses[0].LastName.toUpperCase() ||\r\n vm.Query.name.toUpperCase().split(' ')[2] === ord.Addresses[0].LastName.toUpperCase() || \r\n (vm.Query.name === \"\" || vm.Query.name === null)) &&\r\n (vm.Query.phone === ord.Addresses[0].Phone || (vm.Query.phone === \"\" || vm.Query.phone === null)) &&\r\n (vm.Query.company.toUpperCase() === ord.Addresses[0].Company.toUpperCase() || (vm.Query.company === \"\" || vm.Query.company === null)) &&\r\n (vm.Query.tag === ord.Tag || (!vm.Query.tag)) &&\r\n (vm.Query.status === ord.Status || (vm.Query.status === \"all\" || vm.Query.status === null)) &&\r\n (vm.Query.state === ord.Addresses[0].StateCode || (vm.Query.state === \"\" || vm.Query.state === null)) &&\r\n (vm.Query.city.toUpperCase() === ord.Addresses[0].City.toUpperCase() || (vm.Query.city === \"\" || vm.Query.city === null))) { \r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n vm.removeRow = function(row) { \r\n if(confirm('Permanently delete order ' + row.entity[\"Id\"] + ' for ' + row.entity[\"CustomerName\"] + '?')){\r\n var index = vm.gridOptions.data.indexOf(row.entity);\r\n vm.gridOptions.data.splice(index, 1); \r\n nbPosApi.DeleteOrder(row.entity.Id).then(function (response) { \r\n if (response && response.data != false) {\r\n Notification.success({ message: \"Order Deleted\" }); \r\n }\r\n else{\r\n Notification.error({ message: \"Could not delete order\" });\r\n } \r\n $location.path('searchorder');\r\n }, function (error) {\r\n $log.error(error);\r\n Notification.error({ message: \"Could not delete order\" });\r\n });\r\n } \r\n }\r\n \r\n var filterOrders = function (orders) { \r\n var filteredOrders = [];\r\n for (var x = orders.length - 1; x >= 0; x--)\r\n {\r\n if (isOrderValid(orders[x])) {\r\n filteredOrders.push({\r\n Submitted: $filter('date')(orders[x].CreatedOn, format),\r\n Id: orders[x].Addresses[0].OrderId, \r\n Email: orders[x].Addresses[0].Email,\r\n CustomerName: orders[x].Addresses[0].FirstName + \" \" + orders[x].Addresses[0].LastName,\r\n Company: orders[x].Addresses[0].Company,\r\n City: orders[x].Addresses[0].City,\r\n State: orders[x].Addresses[0].StateCode, \r\n Items: orders[x].Items.length,\r\n Shp: orders[x].OrderShipments.length,\r\n Tag: orders[x].Tag\r\n })\r\n }\r\n } \r\n return filteredOrders;\r\n }\r\n\r\n nbPosApi.getTags().then(function(response){ \r\n vm.tags = response.data;\r\n });\r\n \r\n nbPosApi.loadUSAState().then(function (response) { \r\n vm.States = response.data; \r\n }); \r\n }\r\n})();\r\n\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('OrderhistorydetailsController', orderhistorydetailsController);\r\n /** @ngInject */\r\n function orderhistorydetailsController($log) {\r\n var vm = this;\r\n var orderInfo = [{\r\n title: \"21829- Sunny\",\r\n quantity: 5,\r\n email: \"jamolder@nationalbeef.com\",\r\n business: \"Value Market\",\r\n dateTime: \"09/02/2015 14:47\",\r\n address: \"Mt. Washington, KY\"\r\n },\r\n {\r\n title: \"21829- Sunny\",\r\n quantity: 5,\r\n email: \"jamolder@nationalbeef.com\",\r\n business: \"Value Market\",\r\n dateTime: \"09/02/2015 14:47\",\r\n address: \"Mt. Washington, KY\"\r\n },\r\n {\r\n title: \"21829- Sunny\",\r\n quantity: 5,\r\n email: \"jamolder@nationalbeef.com\",\r\n business: \"Value Market\",\r\n dateTime: \"09/02/2015 14:47\",\r\n address: \"Mt. Washington, KY\"\r\n }];\r\n var shippingInfo = {\r\n ProdTitle: \"Product title\",\r\n User: \"Steve Bob\",\r\n Address: \"1233 N Main St\",\r\n City: \"Cityville\",\r\n State: \"ST\",\r\n Zip: \"33333\",\r\n ShipDate: new Date(\"5/13/2016\")\r\n };\r\n var cartlist = [{\r\n ProdTitle: \"Product title\",\r\n number: \"1233\",\r\n count: 4,\r\n imageUrl: \"https://placeholdit.imgix.net/~text?txtsize=11&txt=Product+Logo&w=115&h=115\"\r\n },\r\n {\r\n ProdTitle: \"Product title 2\",\r\n number: \"3455\",\r\n count: 45,\r\n imageUrl: \"https://placeholdit.imgix.net/~text?txtsize=11&txt=Product+Logo&w=115&h=115\"\r\n }];\r\n\r\n vm.orderHistory = orderInfo;\r\n vm.cartList = cartlist;\r\n vm.detail = shippingInfo;\r\n $log.log(vm)\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .controller('OrderdetailsController', OrderdetailsController);\r\n /** @ngInject */\r\n function OrderdetailsController($log, nbPosApi, $routeParams, Notification, $route, $location) {\r\n var vm = this;\r\n vm.orderId = $routeParams.id; \r\n vm.endpointUrl = nbPosApi.Url;\r\n vm.isShippingEdit = false; \r\n var getCountry = function (countryId) {\r\n var country = {};\r\n angular.forEach(vm.Countries, function (c) {\r\n if (c.Id === countryId) {\r\n country = c;\r\n }\r\n });\r\n return country;\r\n }\r\n nbPosApi.loadUSAState().then(function (response) {\r\n vm.States = response.data;\r\n nbPosApi.loadCountries().then(function (response) {\r\n vm.Countries = response.data;\r\n loadOrderDetails();\r\n });\r\n });\r\n nbPosApi.getTags().then(function(response){ \r\n vm.tags = response.data;\r\n });\r\n var loadOrderDetails = function () {\r\n nbPosApi.getOrderDetails(vm.orderId).then(function (response) { \r\n vm.fullOrder = response.data;\r\n vm.shippingInfo = vm.fullOrder.Addresses[0];\r\n vm.Country = getCountry(vm.shippingInfo.Country);\r\n vm.trackingLinks = getUniqueTrackingLinks(vm.fullOrder.OrderShipments);\r\n vm.Items = response.data.Items; \r\n vm.OrderTagId = response.data.OrderTagId;\r\n });\r\n }\r\n vm.delete = function () { \r\n var YesDelete = confirm(\"Are you sure you want to delete this order?\");\r\n if (YesDelete) {\r\n nbPosApi.DeleteOrder(vm.orderId).then(function (response) { \r\n if (response && response.data != false) {\r\n Notification.success({ message: \"Order Deleted\" }); \r\n }\r\n else\r\n Notification.error({ message: \"Could not delete order\" });\r\n $location.path('searchorder');\r\n }, function (error) {\r\n $log.error(error);\r\n Notification.error({ message: \"Could not delete order\" });\r\n });\r\n }\r\n }\r\n vm.AddItem = function (newItem) { \r\n var data = {\r\n SourceItemId: newItem.Id,\r\n Quantity: newItem.quantity\r\n }\r\n nbPosApi.AddItemToOrder(vm.orderId, data).then(function (response) { \r\n if (response && response.data != false) {\r\n Notification.success({ message: \"Item Added\" });\r\n newItem.Id = response.data;\r\n newItem.Quantity = newItem.quantity\r\n vm.Items.push(newItem);\r\n }\r\n else\r\n Notification.error({ message: \"Could not add item\" });\r\n vm.addItemMode = false;\r\n\r\n }, function (error) {\r\n $log.error(error);\r\n Notification.error({ message: \"Could not add item\" });\r\n });\r\n }\r\n vm.setOrderTag = function () { \r\n var tags = vm.tags.filter(function(t){ return vm.OrderTagId == t.Id});\r\n var tagName = tags.length > 0 ? tags[0].Name : '';\r\n if(tagName === ''){\r\n if(confirm(\"Clear tag from order #\" + vm.orderId + \"?\")){\r\n nbPosApi.UpdateOrderTag(vm.orderId,-1).then(function(response){\r\n if (response && response.data != false) {\r\n Notification.success({ message: \"Tag removed from order\" }); \r\n }\r\n else\r\n Notification.error({ message: \"Tag not removed from order\" }); \r\n });\r\n } \r\n }\r\n else{\r\n if(confirm(\"Add tag: \" + tagName + \" to order #\" + vm.orderId + \"?\")){\r\n nbPosApi.UpdateOrderTag(vm.orderId,parseInt(vm.OrderTagId)).then(function(response){\r\n if (response && response.data != false) {\r\n Notification.success({ message: \"Tag added to order\" }); \r\n }\r\n else\r\n Notification.error({ message: \"Tag not added to order\" }); \r\n });\r\n } \r\n } \r\n }\r\n vm.removeItem = function (item) {\r\n nbPosApi.RemoveItemInOrder(vm.orderId, item.Id).then(function (response) { \r\n if (response && response.data != false) {\r\n Notification.success({ message: \"Item removed\" });\r\n vm.cancel();\r\n }\r\n else\r\n Notification.error({ message: \"Could not remove item\" });\r\n vm.addItemMode = false;\r\n }, function (error) {\r\n $log.error(error);\r\n Notification.error({ message: \"Could not remove item\" });\r\n });\r\n }\r\n vm.shipOrder = function () {\r\n $location.path(\"/order/\" + vm.orderId + \"/shipment\");\r\n } \r\n vm.saveComments = function () {\r\n var data = {\r\n FieldRepId: vm.fullOrder.FieldRepId,\r\n CustomerComment: vm.fullOrder.CustomerComment ? vm.fullOrder.CustomerComment : \"\",\r\n InternalComment: vm.fullOrder.InternalComment ? vm.fullOrder.InternalComment : \"\",\r\n Status: vm.fullOrder.Status\r\n } \r\n nbPosApi.UpdateOrderMeta(vm.orderId, data).then(function (response) { \r\n if(response && response.data != false)\r\n Notification.success({ message: \"Order Updated\" });\r\n else\r\n Notification.error({ message: \"Could not save comments\" });\r\n }, function (error) {\r\n $log.error(error);\r\n Notification.error({ message: \"Could not save comments\" });\r\n });\r\n }\r\n vm.cancel = function () {\r\n $route.reload();\r\n }\r\n vm.EditItemQuantity = function (item) { \r\n nbPosApi.EditItemInOrder(vm.orderId, item.Id, item.Quantity).then(function () { \r\n Notification.success({ message: \"Item Updated\" });\r\n }, function (error) {\r\n $log.error(error);\r\n Notification.error({ message: \"Could not update quantity\" });\r\n });\r\n }\r\n vm.updateShipping = function () {\r\n vm.shippingInfo.StateCode = vm.shippingInfo.Country === 238 ? vm.shippingInfo.StateCode : \"\";\r\n vm.shippingInfo.PostalCode = vm.shippingInfo.Country === 238 ? vm.shippingInfo.PostalCode : \"\";\r\n nbPosApi.UpdateOrderAddress(vm.orderId, vm.shippingInfo.Id, vm.shippingInfo).then(function (response) { \r\n if (response && response.data != false)\r\n Notification.success({ message: \"Shipping Information Update\" });\r\n else\r\n Notification.error({ message: \"Could not update shipping info\" });\r\n vm.isShippingEdit = false\r\n }, function (error) {\r\n $log.error(error);\r\n Notification.error({ message: \"Could not update shipping info\" });\r\n });\r\n }\r\n vm.getProductsByBrand = function () {\r\n getProductsByBrand(vm.selectedBrand);\r\n }\r\n vm.getProductsByProgram = function () {\r\n if (vm.selectedProgram == 'All')\r\n vm.products = vm.allProducts;\r\n else {\r\n var filteredArray = vm.allProducts.filter(function (obj) {\r\n return obj.SubType == vm.selectedProgram;\r\n });\r\n vm.products = filteredArray;\r\n }\r\n }\r\n vm.EmailOrder = function () {\r\n var sendOrderEmail = confirm(\"Are you sure you want to send this order to yourself?\");\r\n if(sendOrderEmail){\r\n nbPosApi.SendEmailOfOrder(vm.orderId).then(function (response) { \r\n if (response && response.data != false)\r\n Notification.success({ message: \"Order Email Sent\" });\r\n else\r\n Notification.error({ message: \"Could not send order email.\" });\r\n }, function (error) {\r\n $log.error(error);\r\n Notification.error({ message: \"Could not send order email.\" });\r\n });\r\n } \r\n }\r\n vm.resendShippingEmail = function (trackingNumber) {\r\n var resendShipEmail = confirm(\"Are you sure you want to resend shipping email?\");\r\n if(resendShipEmail){\r\n nbPosApi.SendOrderShippingEmail(vm.orderId, trackingNumber).then(function (response) { \r\n if (response && response.data != false)\r\n Notification.success({ message: \"Shipping Email Sent\" });\r\n else\r\n Notification.error({ message: \"Could not send shipping email.\" });\r\n }, function (error) {\r\n $log.error(error);\r\n Notification.error({ message: \"Could not send shipping email.\" });\r\n });\r\n } \r\n }\r\n vm.resendConfirmationEmail = function () {\r\n var resendConfirmEmail = confirm(\"Are you sure you want to resend order confirmation email?\");\r\n if(resendConfirmEmail){\r\n nbPosApi.SendOrderConfirmationEmail(vm.orderId).then(function (response) { \r\n if (response)\r\n Notification.success({ message: \"Confirmation Email Sent\" });\r\n else\r\n Notification.error({ message: \"Could not send confirmation email.\" });\r\n }, function (error) {\r\n $log.error(error);\r\n Notification.error({ message: \"Could not send confirmation email.\" });\r\n });\r\n } \r\n }\r\n vm.resendFulfillmentEmails = function () {\r\n var resendFulfillmentEmail = confirm(\"Are you sure you want to resend fulfillment emails?\");\r\n if(resendFulfillmentEmail){\r\n nbPosApi.SendOrderFulfillmentEmails(vm.orderId).then(function (response) { \r\n if (response)\r\n Notification.success({ message: \"Fulfillment Emails Sent\" });\r\n else\r\n Notification.error({ message: \"Could not send fulfillment emails.\" });\r\n }, function (error) {\r\n $log.error(error);\r\n Notification.error({ message: \"Could not send fulfillment emails.\" });\r\n });\r\n } \r\n }\r\n vm.getDateOffset = function () {\r\n var offset = new Date().getTimezoneOffset();\r\n var negative = true;\r\n if (offset < 0) {\r\n offset = Math.abs(offset);\r\n negative = false; //Counterintuitive, I know.\r\n }\r\n var hour = Math.floor(offset / 60);\r\n var minute = offset % 60;\r\n var output = (negative ? \"-\" : \"+\") + (\"0\" + hour).slice(-2) + (\"0\" + minute).slice(-2); \r\n return output;\r\n }\r\n nbPosApi.getBrands().then(function (response) {\r\n vm.brands = response.data; \r\n vm.selectedBrand = vm.brands[0].Id.toString();\r\n getProductsByBrand(vm.selectedBrand);\r\n });\r\n var getProductsByBrand = function (brandId) {\r\n nbPosApi.getItemsByBrand(brandId).then(function (response) {\r\n vm.products = response.data.Items;\r\n vm.allProducts = response.data.Items;\r\n vm.programs = response.data.SubTypes;\r\n vm.programs.push(\"All\");\r\n vm.selectedProgram = \"All\";\r\n });\r\n }\r\n var getUniqueTrackingLinks = function (shipments) {\r\n var links = [],\r\n trackingNumbers = {};\r\n for(var i = 0; i < shipments.length; i++) {\r\n var tN = shipments[i].TrackingNumber.toUpperCase();\r\n if(!trackingNumbers[tN])\r\n {\r\n trackingNumbers[tN] = true;\r\n links.push({\r\n trackingNumber: tN,\r\n trackingLink: shipments[i].TrackingLink.replace(\"{0}\", tN),\r\n shipperName: shipments[i].ShipperName\r\n });\r\n }\r\n }\r\n return links;\r\n }\r\n }\r\n})();\r\n\r\n\n/*global CryptoJS*/\r\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .service('nbPosUtil', nbPosUtil);\r\n /** @ngInject */\r\n function nbPosUtil() { \r\n var util = {\r\n JSONtoBase64: function (arrayBuffer) {\r\n var base64 = '',\r\n encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\r\n bytes = new Uint8Array(arrayBuffer),\r\n byteLength = bytes.byteLength,\r\n byteRemainder = byteLength % 3,\r\n mainLength = byteLength - byteRemainder,\r\n a, b, c, d,\r\n chunk;\r\n // Main loop deals with bytes in chunks of 3\r\n for (var i = 0; i < mainLength; i = i + 3) {\r\n // Combine the three bytes into a single integer\r\n chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]\r\n // Use bitmasks to extract 6-bit segments from the triplet\r\n a = (chunk & 16515072) >> 18 // 16515072 = (2^6 - 1) << 18\r\n b = (chunk & 258048) >> 12 // 258048 = (2^6 - 1) << 12\r\n c = (chunk & 4032) >> 6 // 4032 = (2^6 - 1) << 6\r\n d = chunk & 63 // 63 = 2^6 - 1\r\n // Convert the raw binary segments to the appropriate ASCII encoding\r\n base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d]\r\n }\r\n // Deal with the remaining bytes and padding\r\n if (byteRemainder == 1) {\r\n chunk = bytes[mainLength]\r\n a = (chunk & 252) >> 2 // 252 = (2^6 - 1) << 2\r\n // Set the 4 least significant bits to zero\r\n b = (chunk & 3) << 4 // 3 = 2^2 - 1\r\n base64 += encodings[a] + encodings[b] + '=='\r\n } else if (byteRemainder == 2) {\r\n chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1]\r\n a = (chunk & 64512) >> 10 // 64512 = (2^6 - 1) << 10\r\n b = (chunk & 1008) >> 4 // 1008 = (2^6 - 1) << 4\r\n // Set the 2 least significant bits to zero\r\n c = (chunk & 15) << 2 // 15 = 2^4 - 1\r\n base64 += encodings[a] + encodings[b] + encodings[c] + '='\r\n }\r\n return base64; \r\n },\r\n getTokenExpire : function (awdJwt) {\r\n var expires = new Date();\r\n expires.setSeconds(expires.getSeconds() + awdJwt.expires_in);\r\n return awdJwt.access_token ?\r\n expires :\r\n null;\r\n },\r\n decrypt : function (encryptedValue) {\r\n return CryptoJS.enc.Base64.parse(encryptedValue).toString(CryptoJS.enc.Utf8);\r\n },\r\n parseJwt : function (token) {\r\n var base64Url = token.split('.')[1];\r\n var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n var jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {\r\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\r\n }).join(''));\r\n return JSON.parse(jsonPayload);\r\n },\r\n extractHash : function () {\r\n var hashParseRegEx = /([^#&=]+)=([^&]+)/g;\r\n var current = hashParseRegEx.exec(window.location.hash);\r\n var obj = {};\r\n while (current != null) {\r\n obj[current[1]] = current[2];\r\n current = hashParseRegEx.exec(window.location.hash);\r\n }\r\n return obj;\r\n } \r\n } \r\n return util;\r\n }\r\n})();\r\n\n\r\n(function () {\r\n angular\r\n .module('nbPos')\r\n .service('AuthFactory', authFactory);\r\n \r\n /** @ngInject */\r\n function authFactory($rootScope, $templateCache) {\r\n var appConfig = $rootScope.appConfig\r\n return {\r\n request: function (config) { \r\n if (!isTemplateRequest(config)) { \r\n config.headers['Authorization'] = appConfig.Auth.aws.token_type || \"Bearer\" + \" \" + appConfig.Auth.Token;\r\n }\r\n return config;\r\n }\r\n };\r\n \r\n function isTemplateRequest(config) {\r\n return config.method === 'GET' && (config.url.indexOf(\".html\") != -1 || $templateCache.get(config.url));\r\n } \r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .service('nbPosApi', nbPosApi)\r\n .filter('getById', function () {\r\n return function (propertyName, propertyValue, collection) {\r\n var i = 0, len = collection.length;\r\n for (; i < len; i++) {\r\n if (collection[i][propertyName] == +propertyValue) {\r\n return collection[i];\r\n }\r\n }\r\n return null;\r\n }\r\n });\r\n\r\n /** @ngInject */\r\n function nbPosApi($http, $rootScope, $location, $window, $q, $filter) {\r\n var endpointUrl = $rootScope.appConfig.ApiUrl,\r\n endpoints = {\r\n LogEvent: \"user/eventLogin\",\r\n Authorize: \"access/authorize\",\r\n ItemType: \"itemtype\",\r\n ItemTypeByUser: \"itemtype/user\",\r\n Item: \"item\",\r\n ItemByType: \"item/type\",\r\n ItemByTypeAndUser: \"item/type/{id}/user\",\r\n ItemImage: \"item/image\",\r\n Cart: \"cart\",\r\n ClearCart: \"cart/empty\",\r\n AddItemToCart: \"cart/item/add\",\r\n RemoveCartItem: \"cart/item/remove\",\r\n SubmitCart: \"cart/submit\",\r\n SubmitCartFor: \"cart/submit/{0}\",\r\n Addresses: \"address\",\r\n AddressesByUser: \"address/user\",\r\n Address: \"address\",\r\n AddressTypes: \"address/types\",\r\n User: \"user\",\r\n FindUsers: \"user/find\",\r\n OrderHeaderReport: \"report/order\",\r\n OrderDetailReport: \"report/order/detail\",\r\n ItemByWeekReport: \"report/item/{0}/week\",\r\n ItemByWeekTypeDetailReport: \"report/item/{0}/week/detail\",\r\n ItemByStateDetailReport: \"report/item/{0}/state/detail\",\r\n UpdateOrderAddress: \"order/{0}/address\",\r\n AddItemToOrder: \"order/{0}/item\",\r\n RemoveItemInOrder: \"order/{0}/item\",\r\n SearchOrders: \"order/bydate\",\r\n OrderDetails: \"order/{0}/detail\",\r\n EditItemInOrder: \"order/{0}/item\",\r\n UpdateOrderMeta: \"order/{0}\",\r\n UpdateOrderStatus: \"order/{id}/status\",\r\n DeleteOrder: \"order/{id}\",\r\n UpdateItemSortOrder: \"item/{id}\",\r\n UpdateItemsSortOrder: \"item/UpdateNew?id={id}\",\r\n UpdateSortOrderTag: \"order/{id}\",\r\n ShipOrderItem: \"order/shipment\",\r\n SendEmailOfOrder: \"order/email/{id}\",\r\n SendOrderConfirmationEmail: \"order/email/confirmation/{id}\",\r\n SendOrderFulfillmentEmails: \"order/email/fulfillment/{id}\",\r\n SendOrderShippingEmail: \"order/email/shipping/{id}/{trackingNumber}\",\r\n loadCountries: \"common/country\",\r\n loadFieldReps: \"common/fieldrep\",\r\n loadUSAState: \"common/state\",\r\n loadUserGroups: \"common/usergroups\",\r\n Shippers: \"shipper\",\r\n Suppliers: \"supplier\",\r\n Tags: \"tag\",\r\n Groups: \"group\",\r\n UserReport: \"report/user\",\r\n POSSummary: \"report/order/movement\",\r\n generatePdf: \"report/pdf\",\r\n OrderMovementPdf: \"report/order/movement/pdf\",\r\n ItemPermission: \"itempermission\",\r\n ItemPermissionByItem: \"itempermission/item\",\r\n ItemPermissionsBatch: \"itempermission/batch\",\r\n ItemsByGroupdAndProgram: \"itempermission\"\r\n };\r\n var api = {\r\n log: function (task) {\r\n return $http.post(endpointUrl + \"/\" + endpoints.LogEvent, { Task: task });\r\n },\r\n loadCountries: function () {\r\n return $http.get(endpointUrl + \"/\" + endpoints.loadCountries);\r\n },\r\n loadFieldReps: function () {\r\n return $http.get(endpointUrl + \"/\" + endpoints.loadFieldReps);\r\n },\r\n loadUSAState: function () {\r\n return $http.get(endpointUrl + \"/\" + endpoints.loadUSAState);\r\n },\r\n init: function () {\r\n console.log('init called', $rootScope.appConfig);\r\n if ($rootScope.appConfig.Auth && $rootScope.appConfig.Auth.aws) {\r\n $rootScope.appConfig.isAuthenticated = true;\r\n $rootScope.appConfig.SessionId = \"\";\r\n sessionStorage.setItem(\"nbposu\", $rootScope.appConfig.Auth.aws);\r\n console.log('session storage set', $rootScope.appConfig);\r\n $location.url($location.path());\r\n }\r\n },\r\n logOut: function () {\r\n sessionStorage.removeItem(\"nbposu\");\r\n $rootScope.appConfig = {};\r\n $window.location.href = \"https://www.nationalbeef.com\";\r\n },\r\n getBrand: function (brandId) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.ItemType + \"/\" + brandId);\r\n },\r\n getBrands: function () {\r\n return $http.get(endpointUrl + \"/\" + endpoints.ItemType);\r\n },\r\n getBrandsByUserId: function () {\r\n return $http.get(endpointUrl + \"/\" + endpoints.ItemTypeByUser);\r\n },\r\n updateBrand: function (brandId, data) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.ItemType + \"/\" + brandId, data);\r\n },\r\n createBrand: function (data) {\r\n return $http.post(endpointUrl + \"/\" + endpoints.ItemType, data);\r\n },\r\n deleteBrand: function (id) {\r\n return $http.delete(endpointUrl + \"/\" + endpoints.ItemType + \"/\" + id);\r\n },\r\n getItem: function (itemId) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.Item + \"/\" + itemId);\r\n },\r\n getItemsByBrand: function (brandId) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.ItemByType + \"/\" + brandId);\r\n },\r\n getItemsByBrandAndUser: function (brandId) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.ItemByTypeAndUser.replace(\"{id}\", brandId));\r\n },\r\n updateImage: function (imageId, binaryImage) {\r\n var data = { Binary: binaryImage };\r\n return $http.post(endpointUrl + \"/\" + endpoints.ItemImage + \"/\" + imageId, data);\r\n },\r\n updateItem: function (itemId, data) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.Item + \"/\" + itemId, data);\r\n },\r\n createItem: function (data) {\r\n return $http.post(endpointUrl + \"/\" + endpoints.Item, data);\r\n },\r\n getCart: function () {\r\n return $http.get(endpointUrl + \"/\" + endpoints.Cart)\r\n .catch(function (e) {\r\n if (e.status === 401) {\r\n console.log('cart', e);\r\n sessionStorage.removeItem('nbposu');\r\n window.location.href = $rootScope.appConfig.TargetUrl;\r\n }\r\n });\r\n },\r\n clearCart: function () {\r\n return $http[\"delete\"](endpointUrl + \"/\" + endpoints.ClearCart);\r\n },\r\n addItemToCart: function (itemId, itemQuantity) {\r\n var data = { ItemId: itemId, Quantity: itemQuantity };\r\n return $http.post(endpointUrl + \"/\" + endpoints.AddItemToCart, data);\r\n },\r\n deleteCartItem: function (itemId) {\r\n return $http.delete(endpointUrl + \"/\" + endpoints.RemoveCartItem + \"/\" + itemId);\r\n },\r\n submitCart: function (addressId, orderHeader) {\r\n var data = { AddressId: addressId, OrderHeader: orderHeader };\r\n return $http.post(endpointUrl + \"/\" + endpoints.SubmitCart, data);\r\n },\r\n SubmitCartFor: function (addressId, orderHeader, impersonatedId) {\r\n var data = { AddressId: addressId, OrderHeader: orderHeader };\r\n return $http.post(endpointUrl + \"/\" + endpoints.SubmitCartFor.replace(\"{0}\", impersonatedId), data);\r\n },\r\n getAddresses: function () {\r\n return $http.get(endpointUrl + \"/\" + endpoints.Addresses);\r\n },\r\n getAddressesByUser: function (userId) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.AddressesByUser + \"/\" + userId);\r\n },\r\n getAddress: function (addressId) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.Address + \"/\" + addressId);\r\n },\r\n createAddress: function (data, userId) {\r\n return $http.post(endpointUrl + \"/\" + endpoints.AddressesByUser + \"/\" + userId, data);\r\n },\r\n updateAddress: function (data, addressId) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.Address + \"/\" + addressId, data);\r\n },\r\n getAddressTypes: function () {\r\n return $http.get(endpointUrl + \"/\" + endpoints.AddressTypes);\r\n },\r\n getUserById: function (userId) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.User + \"/\" + userId);\r\n },\r\n createUser: function (data) {\r\n return $http.post(endpointUrl + \"/\" + endpoints.User, data);\r\n },\r\n getShippers: function () {\r\n return $http.get(endpointUrl + \"/\" + endpoints.Shippers);\r\n },\r\n getShipperById: function (id) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.Shippers + \"/\" + id);\r\n },\r\n createShipper: function (data) {\r\n return $http.post(endpointUrl + \"/\" + endpoints.Shippers, data);\r\n },\r\n updateShipper: function (id, data) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.Shippers + \"/\" + id, data);\r\n },\r\n getSuppliers: function () {\r\n return $http.get(endpointUrl + \"/\" + endpoints.Suppliers);\r\n },\r\n getSupplierById: function (id) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.Suppliers + \"/\" + id);\r\n },\r\n updateSupplier: function (id, data) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.Suppliers + \"/\" + id, data);\r\n },\r\n createSupplier: function (data) {\r\n return $http.post(endpointUrl + \"/\" + endpoints.Suppliers, data);\r\n },\r\n getTags: function () {\r\n return $http.get(endpointUrl + \"/\" + endpoints.Tags);\r\n },\r\n getTagById: function (id) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.Tags + \"/\" + id);\r\n },\r\n updateTag: function (id, data) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.Tags + \"/\" + id, { \"Name\": data });\r\n },\r\n createTag: function (data) {\r\n return $http.post(endpointUrl + \"/\" + endpoints.Tags, { \"Name\": data });\r\n },\r\n deleteTag: function (tagId) {\r\n return $http[\"delete\"](endpointUrl + \"/\" + endpoints.Tags + \"/\" + tagId);\r\n },\r\n getGroups: function () {\r\n return $http.get(endpointUrl + \"/\" + endpoints.Groups);\r\n },\r\n getUserGroups: function () {\r\n return $http.get(endpointUrl + \"/\" + endpoints.loadUserGroups);\r\n },\r\n getGroupById: function (id) {\r\n var response = $http.get(endpointUrl + \"/\" + endpoints.Groups),\r\n deferred = $q.defer(),\r\n groupToEdit = {};\r\n response.then(function (group) {\r\n groupToEdit = $filter(\"getById\")('Id', id, group.data);\r\n deferred.resolve(groupToEdit)\r\n }, function () { deferred.reject() })\r\n return deferred.promise;\r\n },\r\n createGroup: function (data) {\r\n return $http.post(endpointUrl + \"/\" + endpoints.Groups, data);\r\n },\r\n updateGroup: function (id, data) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.Groups + \"/\" + id, data);\r\n },\r\n getUsers: function () {\r\n return $http.get(endpointUrl + \"/\" + endpoints.User);\r\n },\r\n getUserReport: function () {\r\n return $http.get(endpointUrl + \"/\" + endpoints.UserReport);\r\n },\r\n findUsers: function (email, phone, firstName, lastName, company, noLogin, active) {\r\n return $http.post(endpointUrl + \"/\" + endpoints.FindUsers, {\r\n UserId: 0,\r\n Email: email,\r\n Phone: phone,\r\n FirstName: firstName,\r\n LastName: lastName,\r\n Company: company,\r\n NoLogin: noLogin,\r\n ActiveOnly: active\r\n });\r\n },\r\n updateUser: function (id, data) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.User + \"/\" + id, data);\r\n },\r\n getPOSReport: function (start, end, labels, quantities) {\r\n var Labels = labels.join(\",\"),\r\n Quantities = quantities.join(\",\");\r\n return $http.get(endpointUrl + \"/\" + endpoints.POSSummary + \"?start=\" + start + \"&end=\" + end + \"&programLabels=\" + Labels + \"&programQuantities=\" + Quantities);\r\n },\r\n getOrderHeaderReport: function (start, end) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.OrderHeaderReport + \"?start=\" + start + \"&end=\" + end);\r\n },\r\n getOrderDetailsReport: function (start, end) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.OrderDetailReport + \"?start=\" + start + \"&end=\" + end);\r\n },\r\n getItemByWeekDetailReport: function (itemId, start, end, subType, shippedOnly) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.ItemByWeekReport.replace(\"{0}\", itemId)\r\n + \"?start=\" + start + \"&end=\" + end + \"&subType=\" + subType + \"&shippedOnly=\" + shippedOnly + \"\");\r\n },\r\n getItemByWeekTypeDetailReport: function (itemId, start, end, subType, shippedOnly) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.ItemByWeekTypeDetailReport.replace(\"{0}\", itemId)\r\n + \"?start=\" + start + \"&end=\" + end + \"&subType=\" + subType + \"&shippedOnly=\" + shippedOnly + \"\");\r\n },\r\n getItemByStateDetailReport: function (itemId, start, end, subType, shippedOnly) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.ItemByStateDetailReport.replace(\"{0}\", itemId)\r\n + \"?start=\" + start + \"&end=\" + end + \"&subType=\" + subType + \"&shippedOnly=\" + shippedOnly + \"\");\r\n },\r\n searchOrders: function (startDate, endDate) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.SearchOrders + \"/\" + startDate + \"/\" + endDate);\r\n },\r\n getOrderDetails: function (orderId) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.OrderDetails.replace(\"{0}\", orderId));\r\n },\r\n EditItemInOrder: function (orderId, itemId, qty) {\r\n var data = { Quantity: parseInt(qty) }\r\n return $http.put(endpointUrl + \"/\" + endpoints.EditItemInOrder.replace(\"{0}\", orderId) + \"/\" + itemId, data);\r\n },\r\n UpdateOrderMeta: function (orderId, data) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.UpdateOrderMeta.replace(\"{0}\", orderId), data);\r\n },\r\n UpdateOrderStatus: function (orderId, status) {\r\n var statusArray = api.GetStaticOrderStatus(),\r\n data = { Status: statusArray[status].Code };\r\n return $http.put(endpointUrl + \"/\" + endpoints.UpdateOrderStatus.replace(\"{id}\", orderId), data);\r\n },\r\n UpdateOrderTag: function (orderId, tagId) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.UpdateSortOrderTag.replace(\"{id}\", orderId), { \"OrderTagId\": tagId });\r\n },\r\n SendEmailOfOrder: function (orderId) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.SendEmailOfOrder.replace(\"{id}\", orderId, {}));\r\n },\r\n SendOrderConfirmationEmail: function (orderId) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.SendOrderConfirmationEmail.replace(\"{id}\", orderId, {}));\r\n },\r\n SendOrderFulfillmentEmails: function (orderId) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.SendOrderFulfillmentEmails.replace(\"{id}\", orderId), {});\r\n },\r\n SendOrderShippingEmail: function (orderId, trackingNumber) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.SendOrderShippingEmail.replace(\"{id}\", orderId).replace(\"{trackingNumber}\", trackingNumber), {});\r\n },\r\n GetStaticOrderStatus: function () {\r\n return [{ Code: \"N\", Name: \"Not Shipped\" }, { Code: \"C\", Name: \"Completed\" }, { Code: \"F\", Name: \"Partial\" }];\r\n },\r\n UpdateOrderAddress: function (orderId, addressId, data) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.UpdateOrderAddress.replace(\"{0}\", orderId) + \"/\" + addressId, data);\r\n },\r\n AddItemToOrder: function (orderId, data) {\r\n return $http.post(endpointUrl + \"/\" + endpoints.AddItemToOrder.replace(\"{0}\", orderId), data);\r\n },\r\n RemoveItemInOrder: function (orderId, itemId) {\r\n return $http[\"delete\"](endpointUrl + \"/\" + endpoints.RemoveItemInOrder.replace(\"{0}\", orderId) + \"/\" + itemId);\r\n },\r\n DeleteOrder: function (orderId) {\r\n return $http[\"delete\"](endpointUrl + \"/\" + endpoints.DeleteOrder.replace(\"{id}\", orderId));\r\n },\r\n ShipOrderItem: function (orderItemId, ShipperId, tracking) {\r\n var data = {\r\n OrderItemId: orderItemId,\r\n ShipperId: ShipperId,\r\n TrackingNumber: tracking\r\n }\r\n return $http.post(endpointUrl + \"/\" + endpoints.ShipOrderItem, data);\r\n },\r\n UpdateOrderItemShipment: function (shipmentId, shipperId, tracking) {\r\n var data = {\r\n ShipperId: shipperId,\r\n TrackingNumber: tracking\r\n }\r\n return $http.put(endpointUrl + \"/\" + endpoints.ShipOrderItem + \"/\" + shipmentId, data);\r\n },\r\n ChangeSortOrder: function (id, modifier) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.UpdateItemSortOrder.replace('{id}', id), { \"SortOrderChange\": modifier });\r\n },\r\n SaveItemOrder: function (id, modifier) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.UpdateItemsSortOrder.replace('{id}', id), { \"SortOrderChange\": modifier });\r\n },\r\n GeneratePdf: function (data) {\r\n return $http.post(endpointUrl + \"/\" + endpoints.generatePdf, data, { responseType: \"blob\" });\r\n },\r\n GetItemPermissions: function (itemId) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.ItemPermissionByItem + \"/\" + itemId);\r\n },\r\n AddItemPermission: function (data) {\r\n return $http.post(endpointUrl + \"/\" + endpoints.ItemPermission, data);\r\n },\r\n UpdateItemPermission: function (data) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.ItemPermission, data);\r\n },\r\n UpdateGroupItemPermissions: function (data) {\r\n return $http.put(endpointUrl + \"/\" + endpoints.ItemPermissionsBatch, data);\r\n },\r\n DeleteItemPermission: function (groupId, itemId) {\r\n return $http.delete(endpointUrl + \"/\" + endpoints.ItemPermission + \"/\" + groupId + \"/\" + itemId);\r\n },\r\n GetItemsByGroupdAndProgram: function (groupId, programId) {\r\n return $http.get(endpointUrl + \"/\" + endpoints.ItemsByGroupdAndProgram + \"/\" + groupId + \"/\" + programId);\r\n },\r\n Url: endpointUrl\r\n };\r\n return api;\r\n }\r\n})();\r\n\n(function () {\r\n\t'use strict';\r\n\tangular\r\n\t\t.module('nbPos')\r\n\t\t.controller('InitController', InitController);\r\n\t/** @ngInject */\r\n\tfunction InitController($rootScope, $location, $window, nbPosApi) {\r\n\t\tvar vm = this;\r\n\t\tvm.targetWeb = $rootScope.appConfig.TargetUrl;\r\n\t\tvm.clientId = $rootScope.appConfig.AppKey;\r\n\t\tvm.originalPathQueryString = $window.location.href;\r\n\r\n\t\tif ($rootScope.appConfig.isAuthenticated) {\r\n\t\t\tvar path = $rootScope.originalPath || \"/myorder\";\r\n\t\t\t$location.path(path);\r\n\t\t\tconsole.log('isAuthenticated Log Event');\r\n\r\n\t\t\tnbPosApi.log(\"POS_LOGIN\").then(function (response) {\r\n\t\t\t\tconsole.log('logged session init', response);\r\n\t\t\t});\r\n\t\t}\r\n\t\tlocalStorage.removeItem('searchParams');\r\n\t\tlocalStorage.removeItem('userSearchParams');\r\n\t}\r\n})();\r\n\r\n\n/*global NBPOS*/\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('nbPos')\r\n .run(runBlock);\r\n\r\n /** @ngInject */\r\n function runBlock($rootScope, $location, nbPosUtil) {\r\n\r\n var cookie = sessionStorage.getItem('nbposu');\r\n var idToken = cookie && cookie != '' ? cookie : NBPOS.Config.token;\r\n\r\n if (!idToken)\r\n window.location.href = NBPOS.Config.targetUrl;\r\n var idTokenDecoded = idToken ? nbPosUtil.parseJwt(idToken) : null;\r\n var isPosAuth = idTokenDecoded ? idTokenDecoded[\"custom:auth_pos\"] === \"True\" : false;\r\n\r\n\r\n $rootScope.appConfig = {\r\n SessionId: $location.search().SID,\r\n AppKey: nbPosUtil.decrypt(NBPOS.Config.appKey),\r\n AppSecret: nbPosUtil.decrypt(NBPOS.Config.appSecret),\r\n Auth: {\r\n \"Token\": idToken || '',\r\n \"Expiration\": '',\r\n \"Email\": idTokenDecoded ? idTokenDecoded[\"email\"] : 0,\r\n \"UserId\": idTokenDecoded ? idTokenDecoded[\"custom:userid\"] : 0,\r\n \"IsAdministrator\": idTokenDecoded && isPosAuth ? idTokenDecoded[\"custom:admin_pos\"] === \"True\" : false,\r\n \"ImpersonatedId\": 0,\r\n \"aws\": idTokenDecoded && isPosAuth ? idToken : null\r\n },\r\n ApiUrl: NBPOS.Config.api,\r\n isAuthenticated: idTokenDecoded && idTokenDecoded !== '' && isPosAuth,\r\n TargetUrl: NBPOS.Config.targetUrl\r\n }; \r\n var e = $rootScope.$on('$routeChangeStart', function () {\r\n if (!$rootScope.appConfig.isAuthenticated) {\r\n var path = $location.path();\r\n if (path && path !== \"/\") {\r\n $rootScope.originalPath = path;\r\n }\r\n $location.path(\"/\");\r\n } \r\n $rootScope.showBreadcrumb = true;\r\n }); e;\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n angular\r\n .module('nbPos')\r\n .config(routeConfig);\r\n function routeConfig($routeProvider) {\r\n var defaultWhen = $routeProvider.when;\r\n $routeProvider.when = function (path, route) {\r\n route.resolve = route.resolve || {};\r\n angular.extend(route.resolve, {\r\n /** @ngInject */\r\n authorization: function (nbPosApi) {\r\n return nbPosApi.init();\r\n }\r\n });\r\n return defaultWhen.call($routeProvider, path, route);\r\n }\r\n $routeProvider\r\n .when('/', {\r\n templateUrl: 'app/components/init.html',\r\n controller: 'InitController',\r\n controllerAs: 'vm'\r\n })\r\n .when('/myorder', {\r\n templateUrl: 'app/components/catalog/brands.html',\r\n controller: 'BrandController',\r\n controllerAs: 'vm'\r\n })\r\n .when(\"/products/:brandId\", {\r\n templateUrl: \"app/components/catalog/products.html\",\r\n controller: \"ProductsController\",\r\n controllerAs: 'brand'\r\n })\r\n .when(\"/cart\", {\r\n templateUrl: \"app/components/catalog/cart.html\",\r\n controller: \"CartController\",\r\n controllerAs: 'cart'\r\n })\r\n .when(\"/shipping/:userId?\", {\r\n templateUrl: \"app/components/forms/shipping.html\",\r\n controller: \"ShippingController\",\r\n controllerAs: 'vm'\r\n })\r\n .when(\"/searchuser\", {\r\n templateUrl: \"app/components/users/searchuser.html\",\r\n controller: \"SearchuserController\",\r\n controllerAs: 'vm'\r\n })\r\n .when(\"/searchuserresults\", {\r\n templateUrl: \"app/components/users/searchUserResults.html\",\r\n controller: \"SearchuserresultsController\",\r\n controllerAs: 'vm'\r\n })\r\n .when(\"/searchorder\", {\r\n templateUrl: \"app/components/orders/searchOrder.html\",\r\n controller: \"SearchOrderController\",\r\n controllerAs: 'admin'\r\n }) \r\n .when(\"/tags\", {\r\n templateUrl: \"app/components/admin/views/tags.html\",\r\n controller: \"TagsController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/editTags/:id\", {\r\n templateUrl: \"app/components/admin/views/tagsEdit.html\",\r\n controller: \"TagsEditController\",\r\n controllerAs: 'admin'\r\n }) \r\n .when(\"/order/:id\", {\r\n templateUrl: \"app/components/orders/orderDetail.html\",\r\n controller: \"OrderdetailsController\",\r\n controllerAs: 'order'\r\n })\r\n .when(\"/order/:id/shipment\", {\r\n templateUrl: \"app/components/orders/shipOrder.html\",\r\n controller: \"ShipOrderController\",\r\n controllerAs: 'vm'\r\n })\r\n //ADMIN\r\n .when(\"/admin/users\", {\r\n templateUrl: \"app/components/admin/views/users.html\",\r\n controller: \"adminUsersController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/admin/userEdit\", {\r\n templateUrl: \"app/components/admin/views/userEdit.html\",\r\n controller: \"adminUserEditController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/admin/userEdit/:id\", {\r\n templateUrl: \"app/components/admin/views/userEdit.html\",\r\n controller: \"adminUserEditController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/admin/groups\", {\r\n templateUrl: \"app/components/admin/views/groups.html\",\r\n controller: \"adminGroupsController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/admin/groupsEdit/:id\", {\r\n templateUrl: \"app/components/admin/views/groupsEdit.html\",\r\n controller: \"adminGroupsEditController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/admin/items\", {\r\n templateUrl: \"app/components/admin/views/items.html\",\r\n controller: \"adminItemsController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/admin/itemPermissions\", {\r\n templateUrl: \"app/components/admin/views/itemPermissions.html\",\r\n controller: \"adminItemPermissionsController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/admin/itemsEdit\", {\r\n templateUrl: \"app/components/admin/views/itemEdit.html\",\r\n controller: \"adminItemsEditController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/admin/itemsEdit/:itemId?\", {\r\n templateUrl: \"app/components/admin/views/itemEdit.html\",\r\n controller: \"adminItemsEditController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/admin/itemtypes\", {\r\n templateUrl: \"app/components/admin/views/types.html\",\r\n controller: \"adminTypesController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/admin/itemtypesEdit\", {\r\n templateUrl: \"app/components/admin/views/typeEdit.html\",\r\n controller: \"adminTypeEditController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/admin/itemtypesEdit/:itemTypeId?\", {\r\n templateUrl: \"app/components/admin/views/typeEdit.html\",\r\n controller: \"adminTypeEditController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/reports/users\", {\r\n templateUrl: \"app/components/admin/views/usersReport.html\",\r\n controller: \"reportUsersController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/reports/orders\", {\r\n templateUrl: \"app/components/admin/views/ordersReport.html\",\r\n controller: \"reportOrdersController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/reports/orderHeader\", {\r\n templateUrl: \"app/components/admin/views/orderHeaderReport.html\",\r\n controller: \"reportOrderHeaderController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/reports/orders/:itemId\", {\r\n templateUrl: \"app/components/admin/views/ordersReport.html\",\r\n controller: \"reportOrdersController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/reports/itemsByWeekType\", {\r\n templateUrl: \"app/components/admin/views/itemsByWeekType.html\",\r\n controller: \"itemsByWeekTypeController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/reports/itemsByWeekTypeDetail\", {\r\n templateUrl: \"app/components/admin/views/itemsByWeekTypeDetail.html\",\r\n controller: \"itemsByWeekTypeDetailController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/reports/itemsByStateType\", {\r\n templateUrl: \"app/components/admin/views/itemsByStateType.html\",\r\n controller: \"itemsByStateTypeController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/reports/posmovement\", {\r\n templateUrl: \"app/components/admin/views/posReport.html\",\r\n controller: \"reportPOSController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/admin/shippers\", {\r\n templateUrl: \"app/components/admin/views/shippers.html\",\r\n controller: \"adminShippersController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/admin/shippersEdit\", {\r\n templateUrl: \"app/components/admin/views/shippersEdit.html\",\r\n controller: \"adminShippersEditController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/admin/shippersEdit/:id\", {\r\n templateUrl: \"app/components/admin/views/shippersEdit.html\",\r\n controller: \"adminShippersEditController\",\r\n controllerAs: 'admin'\r\n }) \r\n .when(\"/admin/suppliers\", {\r\n templateUrl: \"app/components/admin/views/suppliers.html\",\r\n controller: \"adminSuppliersController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/admin/suppliersEdit\", {\r\n templateUrl: \"app/components/admin/views/suppliersEdit.html\",\r\n controller: \"adminSuppliersEditController\",\r\n controllerAs: 'admin'\r\n })\r\n .when(\"/admin/suppliersEdit/:id\", {\r\n templateUrl: \"app/components/admin/views/suppliersEdit.html\",\r\n controller: \"adminSuppliersEditController\",\r\n controllerAs: 'admin'\r\n }) \r\n .otherwise({\r\n redirectTo: '/'\r\n });\r\n }\r\n})();\r\n\nangular.module(\"nbPos\").run([\"$templateCache\", function($templateCache) {$templateCache.put(\"app/components/init.html\",\"
\\r\\n

Access denied

\\r\\n \\r\\n

Click here to login or refresh your session

\\r\\n \\r\\n
\");\n$templateCache.put(\"app/components/catalog/brands.html\",\"
\\r\\n
\\r\\n

My Order - Select Brand

\\r\\n
\\r\\n
\\r\\n
\\r\\n

No Items to Display

\\r\\n

Loading Brands..

\\r\\n \\r\\n
\\r\\n\\r\\n\");\n$templateCache.put(\"app/components/catalog/cart.html\",\"
\\r\\n
\\r\\n My Order - View Cart Items
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

{{product.Item.Description}}

\\r\\n

Item #: {{product.Item.ItemNumber}}

\\r\\n

Status: {{product.Item.Status}}

\\r\\n

Package Count: {{product.Item.PackageCount}}

\\r\\n \\r\\n

\\r\\n \\r\\n

\\r\\n
\\r\\n
\\r\\n Delete\\r\\n
\\r\\n
\\r\\n
\\r\\n

You cart is empty

\\r\\n 0\\\" class=\\\"btn btn--full\\\">Save & Checkout\\r\\n
\");\n$templateCache.put(\"app/components/catalog/products.html\",\"
\\r\\n
\\r\\n

My Order - Add to Cart - Select Product Items

\\r\\n
\\r\\n
\\r\\n

Program

\\r\\n \\r\\n
\\r\\n
\\r\\n

Item Type

\\r\\n \\r\\n
\\r\\n
\\r\\n

Sort by

\\r\\n \\r\\n

V

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

No Items to Display

\\r\\n

Loading Products..

\\r\\n

It appears you are not authorized for this brand. Please contact your field representative if you feel this is incorrect.

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

{{item.Description}}

\\r\\n

Item #: {{item.ItemNumber}}

\\r\\n

Status: {{item.Status}}

\\r\\n

Package Count: {{item.PackageCount}}

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\");\n$templateCache.put(\"app/components/forms/shipping.html\",\"
\\r\\n
\\r\\n My Order - Shipping Address\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\");\n$templateCache.put(\"app/components/orders/orderDetail.html\",\"
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

Order Info

\\r\\n
\\r\\n

Order #: {{order.shippingInfo.OrderId}}

\\r\\n

First Name: {{order.shippingInfo.FirstName}}

\\r\\n

Last Name: {{order.shippingInfo.LastName}}

\\r\\n

Company: {{order.shippingInfo.Company}}

\\r\\n

Title: {{order.shippingInfo.Label}}

\\r\\n

Address: {{order.shippingInfo.Address1}}

\\r\\n

City: {{order.shippingInfo.City}}

\\r\\n

State: {{order.shippingInfo.StateCode}}

\\r\\n

Zip: {{order.shippingInfo.PostalCode}}

\\r\\n

Country: {{order.Country.Name}} ({{order.Country.Code}})

\\r\\n

Phone: {{order.shippingInfo.Phone}}

\\r\\n

Email: {{order.shippingInfo.Email}}

\\r\\n

Submitted: {{order.fullOrder.CreatedOn | date:\\'short\\'}}

\\r\\n

Status: {{order.fullOrder.Status}}

\\r\\n

Tracking: \\r\\n \\r\\n None\\r\\n {{link.shipperName}}: \\r\\n {{link.trackingNumber}} \\r\\n Resend Shipping Email\\r\\n \\r\\n \\r\\n

\\r\\n

Tag: \\r\\n \\r\\n

\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Save Comments \\r\\n Resend Confirmation Email\\r\\n Resend Fulfillment Emails\\r\\n Delete Order\\r\\n
\\r\\n
\\r\\n
\\r\\n

First Name:

\\r\\n

Last Name:

\\r\\n

\\r\\n Company:
\\r\\n \\r\\n

\\r\\n

Title:

\\r\\n

Address:

\\r\\n

City:

\\r\\n

\\r\\n State:
\\r\\n \\r\\n

\\r\\n

Zip:

\\r\\n

\\r\\n Country:
\\r\\n \\r\\n

\\r\\n

Phone:

\\r\\n\\r\\n \\r\\n Cancel\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{item.Description}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Product Title {{item.Description}}

\\r\\n

Item #: {{item.ItemNumber}}

\\r\\n

Package Count: {{item.PackageCount}}

\\r\\n

Qty: {{item.Quantity}}

\\r\\n

\\r\\n \\r\\n \\r\\n

\\r\\n
\\r\\n
\\r\\n Edit\\r\\n Save\\r\\n Delete Item\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Cancel\\r\\n \\r\\n
\\r\\n
\\r\\n

Item Type

\\r\\n \\r\\n
\\r\\n
\\r\\n

Program

\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

{{item.Description}}

\\r\\n

Status #: {{item.Status}}

\\r\\n

Package Count: {{item.PackageCount}}

\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/orders/orderHistoryDetails.html\",\"
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Shipping Info

\\r\\n

Label: {{detail.ProdTitle}}

\\r\\n

Label: {{detail.User}}

\\r\\n

Label: {{detail.Address}}

\\r\\n

Label: {{detail.City}}

\\r\\n

Label: {{detail.State}}

\\r\\n

Label: {{detail.Zip}}

\\r\\n

Label: {{detail.ShipDate}}

\\r\\n Repeat Order\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Product Title {{item.title}}

\\r\\n

Item #: {{item.number}}

\\r\\n

Package Count: {{item.count}}

\\r\\n

Qty: {{item.quantity}}

\\r\\n
\\r\\n
\\r\\n Edit\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/orders/searchOrder.html\",\"
\\r\\n

Search Orders

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

No Orders Found

\\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/orders/shipOrder.html\",\"
\\r\\n
\\r\\n

Enter Information for new shipment:

\\r\\n
\\r\\n
\\r\\n
\\r\\n

Shipper

\\r\\n \\r\\n

Tracking #:

\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n

Items Already shipped

\\r\\n
\\r\\n
\\r\\n
\\r\\n

Shipper

\\r\\n \\r\\n

Tracking #:

\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/users/searchuser.html\",\"
\\r\\n
\\r\\n My Order - Order For - Find User
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Find User\\r\\n
\\r\\n
\\r\\n
\\r\\n\");\n$templateCache.put(\"app/components/users/searchUserResults.html\",\"
\\r\\n
\\r\\n My Order - Search Results- Select User
\\r\\n
\\r\\n
\\r\\n
\\r\\n

User not found

\\r\\n

Searching for user ..

\\r\\n
\\r\\n

{{result.FirstName}} {{result.LastName}}

\\r\\n

{{result.Phone}}

\\r\\n

{{result.Company}}

\\r\\n
\\r\\n
\\r\\n
\");\n$templateCache.put(\"app/directives/navbar/navbar.html\",\"\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n < Continue Shopping\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

You are ordering for {{nav.targetUser}} Cancel Order for

\\r\\n
\\r\\n
\\r\\n

Loading Point of Sales Application..

\");\n$templateCache.put(\"app/directives/report-export/reportExport.html\",\"
\\r\\n \\r\\n \\r\\n
\\r\\n\");\n$templateCache.put(\"app/components/admin/views/groups.html\",\"
\\r\\n

{{admin.heading}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/groupsEdit.html\",\"
\\r\\n

{{admin.heading}} Group

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/itemEdit.html\",\"
\\r\\n

{{admin.heading}} Item

\\r\\n
\\r\\n

\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
    \\r\\n
      \\r\\n
    • \\r\\n \\r\\n \\r\\n
    • \\r\\n
    • \\r\\n \\r\\n \\r\\n
    • \\r\\n
    • \\r\\n \\r\\n \\r\\n
    • \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/itemPermissions.html\",\"
\\r\\n

Manage Group Item Permissions

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/items.html\",\"
\\r\\n

{{admin.heading}} Items

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
DescriptionItem #Package CountImage
\\r\\n bars\\r\\n {{item.Description}}{{ item.ItemNumber }}{{ item.PackageCount }}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/itemsByStateType.html\",\"
\\r\\n

{{admin.heading}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n calendar\\r\\n
\\r\\n to\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n calendar\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/itemsByWeekType.html\",\"
\\r\\n

{{admin.heading}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n calendar\\r\\n
\\r\\n to\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n calendar\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/itemsByWeekTypeDetail.html\",\"
\\r\\n

{{admin.heading}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n calendar\\r\\n
\\r\\n to\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n calendar\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
POS Items Ordered by Week and Item Type Details
\\r\\n
\\r\\n \\r\\n Date Range: {{admin.startDate | date:\\'MM-dd-yyyy\\'}} - {{admin.endDate | date:\\'MM-dd-yyyy\\'}}\\r\\n \\r\\n \\r\\n Shipped Status: {{admin.shippedItemsOnly ? \\\"Shipped\\\" : \\\"Ordered or Shipped\\\"}}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n Item Type: {{admin.getCleanBrandDescription(admin.selectedBrand)}}\\r\\n \\r\\n \\r\\n Item Subtype: {{admin.selectedProgram}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
WeekRetailer/End-UserDistributorDescriptionCityStateQtySubmitted By
{{item.WeekStarting | date:\\'MM-dd-yyyy\\'}}{{item.Company}}{{item.Distributor}}{{item.Description}}{{item.City}}{{item.StateCode}}{{item.Quantity}}{{item.Email}}
\\r\\n
Total Orders: {{(admin.reportData.length != null ? admin.reportData.length : 0)}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\");\n$templateCache.put(\"app/components/admin/views/orderHeaderReport.html\",\"
\\r\\n

{{admin.heading}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n calendar\\r\\n
\\r\\n to\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n calendar\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/ordersReport.html\",\"
\\r\\n

{{admin.heading}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n calendar\\r\\n
\\r\\n to\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n calendar\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/posReport.html\",\"
\\r\\n

{{admin.heading}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n calendar\\r\\n
\\r\\n to\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n calendar\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n press and hold CTRL to select mulitple\\r\\n \\r\\n {{admin.selectedBrandsForLabels | json}} \\r\\n \\r\\n press and hold CTRL to select mulitple\\r\\n \\r\\n {{admin.selectedBrandsForQuantities | json}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
National Beef POS Order Movement Summary
\\r\\n
\\r\\n {{admin.startDate | date:\\'MM-dd-yyyy\\'}} - {{admin.endDate | date:\\'MM-dd-yyyy\\'}}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
Labels - Qty Shipped by Program
\\r\\n
\\r\\n
Orders by Program
\\r\\n
\\r\\n
Origin
\\r\\n
\\r\\n
Week Ending
\\r\\n
\\r\\n
{{admin.getCleanBrandDescription(brand.replace(\\'Qty_\\', \\'\\'))}}
\\r\\n
\\r\\n
{{admin.getCleanBrandDescription(brand.replace(\\'NOrd_\\', \\'\\'))}}
\\r\\n
JM
LM
Tot Order Mvmt Current Week
12 Week Avg
\\r\\n
{{item.WeekEnding | date:\\'MM-dd-yyyy\\'}}
\\r\\n
\\r\\n
{{item[lbl]}}
\\r\\n
\\r\\n
{{item[qty]}}
\\r\\n
\\r\\n
{{item.Origin_JM}}
\\r\\n
\\r\\n
{{item.Origin_LV}}
\\r\\n
\\r\\n
{{item.TotOrders}}
\\r\\n
\\r\\n
{{item.Avg12Week}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/shippers.html\",\"
\\r\\n

{{admin.heading}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/shippersEdit.html\",\"
\\r\\n

{{admin.heading}} Shipper

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/suppliers.html\",\"
\\r\\n

{{admin.heading}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/suppliersEdit.html\",\"
\\r\\n

{{admin.heading}} Supplier

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/tags.html\",\"
\\r\\n

Manage Tags

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/tagsEdit.html\",\"
\\r\\n

Edit Tag

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/typeEdit.html\",\"
\\r\\n

{{admin.heading}} Item Type

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/types.html\",\"
\\r\\n

{{admin.heading}}

\\r\\n
\\r\\n \\r\\n
\");\n$templateCache.put(\"app/components/admin/views/userEdit.html\",\"
\\r\\n

{{admin.heading}} User

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

Authorized Products

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/users.html\",\"
\\r\\n

Manage Users

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n

\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/views/usersReport.html\",\"
\\r\\n

{{admin.heading}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\");\n$templateCache.put(\"app/components/admin/controllers/users/searchuser.html\",\"
\\r\\n
\\r\\n My Order - Order For - Find User
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Find User\\r\\n
\\r\\n
\\r\\n
\\r\\n\");\n$templateCache.put(\"app/components/admin/controllers/users/searchUserResults.html\",\"
\\r\\n
\\r\\n My Order - Search Results- Select User
\\r\\n
\\r\\n
\\r\\n
\\r\\n

User not found

\\r\\n

Searching for user ..

\\r\\n
\\r\\n

{{result.FirstName}} {{result.LastName}}

\\r\\n

{{result.Phone}}

\\r\\n

{{result.Company}}

\\r\\n
\\r\\n
\\r\\n
\");}]);"],"sourceRoot":"/source/"}